服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

技巧:使用java把文件/目录压缩成zip包

使用java自带的类 java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的文件/目录命名,如果有中文名,那么打包就会失败。在ant.jar类库中也有zip类,引入 org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,ant的获得途径也比较多,一般的应用服务器中有这个包,如果没有去下载个tomcat5.x,里面也有ant.jar,可以使用。

例子如下:

import java.io.file;
import org.apache.tools.zip.zipoutputstream;
import java.io.fileinputstream;
import java.io.fileoutputstream;

public class compressbook {    
    public compressbook() {        
    }

public void zip(string inputfilename) throws exception {     
    string zipfilename="c:\\test.zip";//打包后文件名字
    system.out.println(zipfilename);
    zip(zipfilename, new file(inputfilename));  
    
    }

 private void zip(string zipfilename, file inputfile)
 throws exception {
   zipoutputstream out = new zipoutputstream(
new fileoutputstream(zipfilename));
   zip(out, inputfile, "");
   system.out.println("zip done");
   out.close();
 }

 private void zip(zipoutputstream out, file f, string base)
 throws exception {
   if (f.isdirectory()) {
     file[] fl = f.listfiles();
     out.putnextentry(new org.apache.tools.zip.zipentry(base + "/"));
     base = base.length() == 0 ? "" : base + "/";
     for (int i = 0; i < fl.length; i++) {
       zip(out, fl[i], base + fl[i].getname());
     }
   }
   else {
     out.putnextentry(new org.apache.tools.zip.zipentry(base));
     fileinputstream in = new fileinputstream(f);
     int b;
     system.out.println(base);
     while ( (b = in.read()) != -1) {
       out.write(b);
     }
     in.close();
   }
 }
}

扫描关注微信公众号