新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > JAVA > 正文:技巧:使用Java把文件/目录压缩成ZIP包

技巧:使用Java把文件/目录压缩成ZIP包

新客网 XKER.COM 2007-07-10 来源: dxaw 收藏本文

使用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();
   }
 }
}

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐