思诚科技 seecen LOGO
咨询热线:0791-87557233
  首页 |   Java EE  
关于思诚
关注官方微信

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工具打成的包,和大家分享一下!


  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2018