100 分: 求zip压缩、解压缩的实例 http://download.gro.clinux.org/jzj/javazip_src_0.8alpha.zip自己下载,看吧! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 强力建议使用Java自带的Zip输出/输入流 我用过的zip类,有点乱 凑合了import java.io.*;import java.util.*;import java.util.zip.*;public class ZipCompress { /** * 对文件进行压缩操作 * @param strSourceFilePath 压缩文件的原文件路径 * @param strSourceFile 压缩文件的原文件的文件名 * @param strZipPath 压缩处理后的文件存放路径 * @param strZipFile 压缩处理后的文件名 * @return 压缩是否成功 */ public static boolean zipFile(String strSourceFilePath,String strSourceFile,String strZipPath,String strZipFile){ try { FileOutputStream f = new FileOutputStream(strZipPath+strZipFile+".zip"); ZipOutputStream out = new ZipOutputStream(new DataOutputStream(f));// for(int i = 0; i < args.length; i++) { System.out.println( "reading file " + strSourceFilePath+strSourceFile); DataInputStream in =new DataInputStream(new FileInputStream(strSourceFilePath+strSourceFile)); out.putNextEntry(new ZipEntry(strSourceFile)); int c; while((c = in.read()) != -1){ out.write(c); } in.close();// } out.close(); return true; } catch(Exception e) { e.printStackTrace(); } return false; } /** * 对数据流进行压缩处理 * @param source 要进行压缩处理的数据流 * @param strFileName 压缩文件的相对路径 * @param strZipPath 压缩处理后的文件路径 * @param strZipFile 压缩处理后的文件名 * @return 压缩处理是否成功 */ public static boolean zip(byte[] source,String strFileName,String strZipPath,String strZipFile){ try { FileOutputStream f = new FileOutputStream(strZipPath+strZipFile+".zip"); ZipOutputStream out = new ZipOutputStream(new DataOutputStream(f));// for(int i = 0; i < args.length; i++) {// System.out.println( "reading data " + source);// DataInputStream in =new DataInputStream(new FileInputStream(strSourceFilePath+strSourceFile)); out.putNextEntry(new ZipEntry(strFileName));// int c;// while((c = in.read()) != -1){ out.write(source);// }// in.close();// } out.close(); return true; } catch(Exception e) { e.printStackTrace(); } return false; } /** * 对文件进行解压缩处理 * @param strZipPath 解压缩的文件路径 * @param strZipFile 解压缩的文件名 * @param strSourceFilePath 解压缩处理后的文件存放路径 * @param strSourceFile 解压缩处理后的文件名 * @return 解压缩是否成功 */ public static boolean unizipFile(String strZipPath,String strZipFile,String strSourceFilePath,String strSourceFile){ try { FileInputStream f = new FileInputStream(strZipPath+strZipFile+".zip"); ZipInputStream in = new ZipInputStream(new DataInputStream(f));// for(int i = 0; i < args.length; i++) { System.out.println( "Writing file " + strSourceFilePath+strSourceFile); DataOutputStream out =new DataOutputStream(new FileOutputStream(strSourceFilePath+strSourceFile)); in.getNextEntry(); int c; while((c = in.read()) != -1){ out.write(c); } in.close();// } out.close(); return true; } catch(Exception e) { e.printStackTrace(); } return false; } /** * 对压缩文件进行解压缩处理 * @param strZipPath 压缩文件存放路径 * @param strZipFile 压缩文件的文件名 * @return 返回解压缩处理后的文件流 */ public static byte[] unizip(String strZipPath,String strZipFile){// StringBuffer buf=new StringBuffer(10000); byte[] buffer=null; try { FileInputStream f = new FileInputStream(strZipPath+strZipFile+".zip"); ZipInputStream in = new ZipInputStream(new DataInputStream(f)); System.out.println( "reading file " + strZipPath+strZipFile+".zip"); ZipEntry d=in.getNextEntry();// buffer=new byte[(int)d.getSize()]; int c;// c=in.read(buffer); byte[] by=new byte[1000]; String str; while((c=in.read(by)) != -1){ buffer=appendbytes(buffer,by,c); } in.close(); } catch(Exception e) { e.printStackTrace(); } return buffer; } public static void main(String[] args) { ZipCompress a=new ZipCompress(); try{ a.zip("你好".getBytes(),"aa.txt","d:/","aa"); }catch(Exception e){ e.printStackTrace(); } byte[] temp=a.unizip("d:/","huangzg"); System.out.println(new String(temp)); } /** * 对字节的追加操作 * @param a 原字节 * @param b 添加的字节 * @param length 添加字节的长度 * @return 添加字节处理后的字节 */ private static byte[] appendbytes(byte[] a,byte[] b,int length){ int lengtha=0; if(a!=null){ lengtha=a.length; } if(b==null||length<1){ return a; } byte[] c=new byte[lengtha+length]; for(int i=0;i<lengtha;i++){ c[i]=a[i]; } for(int j=0;j<length;j++){ c[j+lengtha]=b[j]; } return c; }} /** * 进行压缩文件的处理 * @param source * @return */ private boolean zipFile(byte[] source){ boolean success=false; try{ success= ZipCompress.zip(source,_fileName.concat(".xml"),_filePath,_fileName); }catch(Exception ex){ errMsg = "压缩文件的过程失败!"; ExcAct.doHandle(ex); } return success; }调用的时候像这样 /** * 进行压缩文件的处理 * @param source * @return */ private boolean zipFile(byte[] source){ boolean success=false; try{ success= ZipCompress.zip(source,_fileName.concat(".xml"),_filePath,_fileName); }catch(Exception ex){ errMsg = "压缩文件的过程失败!"; } return success; } 诡异的爪哇语法,求拯救:) 求助各位大大 重写的equals()和hashCode()是如何被调用的? Random 类 discuz 7.2帖子自动回复问题 关于数据库连接池出错问题--DBPool_v4.8.3.jar 画图形用户界面时在监听事件上遇到的问题 研究了好些天,web实现打印的功能,今天拿出来. java的否决机制 研究过pet store的帮帮忙!!! 请教:在java中怎么引用C++写的DLL? 初学java遇见的小问题,请各位帮忙给看看!为什么我的IE不能正常显示我的applet呢?
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class ZipCompress { /**
* 对文件进行压缩操作
* @param strSourceFilePath 压缩文件的原文件路径
* @param strSourceFile 压缩文件的原文件的文件名
* @param strZipPath 压缩处理后的文件存放路径
* @param strZipFile 压缩处理后的文件名
* @return 压缩是否成功
*/
public static boolean zipFile(String strSourceFilePath,String strSourceFile,String strZipPath,String strZipFile){
try {
FileOutputStream f = new FileOutputStream(strZipPath+strZipFile+".zip");
ZipOutputStream out = new ZipOutputStream(new DataOutputStream(f));
// for(int i = 0; i < args.length; i++) {
System.out.println( "reading file " + strSourceFilePath+strSourceFile);
DataInputStream in =new DataInputStream(new FileInputStream(strSourceFilePath+strSourceFile));
out.putNextEntry(new ZipEntry(strSourceFile));
int c;
while((c = in.read()) != -1){
out.write(c);
}
in.close();
// }
out.close();
return true;
} catch(Exception e) {
e.printStackTrace();
}
return false;
} /**
* 对数据流进行压缩处理
* @param source 要进行压缩处理的数据流
* @param strFileName 压缩文件的相对路径
* @param strZipPath 压缩处理后的文件路径
* @param strZipFile 压缩处理后的文件名
* @return 压缩处理是否成功
*/
public static boolean zip(byte[] source,String strFileName,String strZipPath,String strZipFile){
try {
FileOutputStream f = new FileOutputStream(strZipPath+strZipFile+".zip");
ZipOutputStream out = new ZipOutputStream(new DataOutputStream(f));
// for(int i = 0; i < args.length; i++) {
// System.out.println( "reading data " + source);
// DataInputStream in =new DataInputStream(new FileInputStream(strSourceFilePath+strSourceFile));
out.putNextEntry(new ZipEntry(strFileName));
// int c;
// while((c = in.read()) != -1){
out.write(source);
// }
// in.close();
// }
out.close();
return true;
} catch(Exception e) {
e.printStackTrace();
}
return false;
} /**
* 对文件进行解压缩处理
* @param strZipPath 解压缩的文件路径
* @param strZipFile 解压缩的文件名
* @param strSourceFilePath 解压缩处理后的文件存放路径
* @param strSourceFile 解压缩处理后的文件名
* @return 解压缩是否成功
*/
public static boolean unizipFile(String strZipPath,String strZipFile,String strSourceFilePath,String strSourceFile){
try {
FileInputStream f = new FileInputStream(strZipPath+strZipFile+".zip");
ZipInputStream in = new ZipInputStream(new DataInputStream(f));
// for(int i = 0; i < args.length; i++) {
System.out.println( "Writing file " + strSourceFilePath+strSourceFile);
DataOutputStream out =new DataOutputStream(new FileOutputStream(strSourceFilePath+strSourceFile));
in.getNextEntry();
int c;
while((c = in.read()) != -1){
out.write(c);
}
in.close();
// }
out.close();
return true;
} catch(Exception e) {
e.printStackTrace();
}
return false;
} /**
* 对压缩文件进行解压缩处理
* @param strZipPath 压缩文件存放路径
* @param strZipFile 压缩文件的文件名
* @return 返回解压缩处理后的文件流
*/
public static byte[] unizip(String strZipPath,String strZipFile){
// StringBuffer buf=new StringBuffer(10000);
byte[] buffer=null;
try {
FileInputStream f = new FileInputStream(strZipPath+strZipFile+".zip");
ZipInputStream in = new ZipInputStream(new DataInputStream(f));
System.out.println( "reading file " + strZipPath+strZipFile+".zip");
ZipEntry d=in.getNextEntry();// buffer=new byte[(int)d.getSize()]; int c;
// c=in.read(buffer);
byte[] by=new byte[1000];
String str;
while((c=in.read(by)) != -1){
buffer=appendbytes(buffer,by,c);
}
in.close(); } catch(Exception e) {
e.printStackTrace();
}
return buffer;
}
public static void main(String[] args) {
ZipCompress a=new ZipCompress();
try{
a.zip("你好".getBytes(),"aa.txt","d:/","aa");
}catch(Exception e){
e.printStackTrace();
}
byte[] temp=a.unizip("d:/","huangzg");
System.out.println(new String(temp));
} /**
* 对字节的追加操作
* @param a 原字节
* @param b 添加的字节
* @param length 添加字节的长度
* @return 添加字节处理后的字节
*/
private static byte[] appendbytes(byte[] a,byte[] b,int length){
int lengtha=0;
if(a!=null){
lengtha=a.length;
}
if(b==null||length<1){
return a;
}
byte[] c=new byte[lengtha+length];
for(int i=0;i<lengtha;i++){
c[i]=a[i];
}
for(int j=0;j<length;j++){
c[j+lengtha]=b[j];
}
return c;
}
} /**
* 进行压缩文件的处理
* @param source
* @return
*/
private boolean zipFile(byte[] source){
boolean success=false;
try{
success= ZipCompress.zip(source,_fileName.concat(".xml"),_filePath,_fileName);
}catch(Exception ex){
errMsg = "压缩文件的过程失败!";
ExcAct.doHandle(ex);
}
return success;
}调用的时候像这样 /**
* 进行压缩文件的处理
* @param source
* @return
*/
private boolean zipFile(byte[] source){
boolean success=false;
try{
success= ZipCompress.zip(source,_fileName.concat(".xml"),_filePath,_fileName);
}catch(Exception ex){
errMsg = "压缩文件的过程失败!";
}
return success;
}