Java压缩文件/目录成ZIP包最新技巧
来源:网络 更新时间:2014-12-6
使用Java自带的类java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的名件/目录命名,如果有中文名,那么打包就会失败。本人经过一段时间的摸索和实践,发现在一般的Ant.jar类库中也有zip类,importorg.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,实在不行去下载个tomcat5.X,里面也有ant.jar,本人经过测试,可以使用。
例子如下:
importjava.io.File;
importorg.apache.tools.zip.ZipOutputStream;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importdianda.cwmanage.*;
importdianda.com.util.Format;
publicclassCompressBook{
publicCompressBook(){
}
publicvoidzip(StringinputFileName)throwsException{
StringzipFileName="c:\\test.zip";//打包后文件名字
System.out.println(zipFileName);
zip(zipFileName,newFile(inputFileName));
}
privatevoidzip(StringzipFileName,FileinputFile)throwsException{
ZipOutputStreamout=newZipOutputStream(newFileOutputStream(zipFileName));
zip(out,inputFile,"");
System.out.println("zipdone");
out.close();
}
privatevoidzip(ZipOutputStreamout,Filef,Stringbase)throwsException{
if(f.isDirectory()){
File[]fl=f.listFiles();
out.putNextEntry(neworg.apache.tools.zip.ZipEntry(base "/"));
base=base.length()==0?"":base "/";
for(inti=0;i<fl.length;i ){
zip(out,fl[i],base fl[i].getName());
}
}
else{
out.putNextEntry(neworg.apache.tools.zip.ZipEntry(base));
FileInputStreamin=newFileInputStream(f);
intb;
System.out.println(base);
while((b=in.read())!=-1){
out.write(b);
}
in.close();
}
}
}
唯一遗憾,美中不足的是,无论,java.util.zip或者org.apache.tools.zip都不能解压rar工具打成的rar包,搜了半天也找不到采用java解压rar工具打成的包,盼望哪位高人能够提供解压rar工具打成的包,和大家分享一下!