Java压缩文件/目录成ZIP包最新技巧

原创 2005年05月23日 11:09:00
  使用java自带的类 java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的名件/目录命名,如果有中文名,那么打包就会失败。本人经过一段时间的摸索和实践,发现在一般的Ant.jar类库中也有zip类,import 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;
import dianda.cwmanage.*;
import dianda.com.util.Format;

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

  唯一遗憾,美中不足的是,无论,java.util.zip或者org.apache.tools.zip都不能解压rar工具打成的rar包,搜了半天也找不到采用java解压rar工具打成的包,盼望哪位高人能够提供解压rar工具打成的包,和大家分享一下!

打包上传zip文件

最近项目需求将图片打包成zip上传, 记录一下。 为了方便以后使用就把它写成工具类的形式吧。这里一共用到3个工具类 分别是XZip(用于压缩)、UploadUtils(文件上传类)、ThreadPoo...
  • lijieming159
  • lijieming159
  • 2016年08月30日 14:01
  • 2125

java 从zip包中复制文件

/** * 从zip包中把AndroidManifest.xml文件拷贝出来 * @param file * @param fileName */ public void copyM...
  • syyair
  • syyair
  • 2015年06月21日 17:56
  • 925

JAVA读取zip文件 JAVA读取压缩文件 解压zip里面的指定格式文件

在网上查看了很多例子,结果很是失望,于是决定自己写一个例子,供给大家参考学习; 废话就不多说了直接看例子: package com.em.test.client; import java....
  • younger_z
  • younger_z
  • 2014年11月10日 21:36
  • 1768

java代码操作zip文件--读取zip文件

public static void readZip(String path) { try { ZipInputStream zin = new ZipInpu...
  • u014373031
  • u014373031
  • 2016年08月24日 21:08
  • 3111

java 无需解压遍历并读取zip文件内容

代码: package com.wicresoft.jpo; import java.io.BufferedInputStream; import java.io.BufferedReader;...
  • fogeater
  • fogeater
  • 2013年03月05日 08:48
  • 3312

java-读取zip文件内容

import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; imp...
  • qq_32475739
  • qq_32475739
  • 2017年03月22日 17:23
  • 336

Java多线程下压缩文件demo

package net.liuyx.test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; im...
  • lyx2007825
  • lyx2007825
  • 2012年05月30日 23:37
  • 2854

java直接读取.zip压缩文件(一)

java不解压直接读取.zip压缩文件该示例的,关于下面演示的项目源代下载地址如下: 源代码下载地址package com.sd.test.readzip;import java.io.Buffer...
  • baidu_16520113
  • baidu_16520113
  • 2015年07月03日 02:17
  • 5896

java 多excel下载 打成zip压缩包 程序中创建文件 响应到浏览器(三)

过程:在程序中生成Excel文件们,放到ByteOutputStream中,再把该流放到byte[]数组中,然后把数组写到zipEntry中,最后把zip压缩包的流都缓存到新的ByteOutputSt...
  • yjf00001
  • yjf00001
  • 2016年10月27日 15:48
  • 803

java代码实现加密压缩文件解压

package com.dashu.basicinfo.zip; import java.io.File; import java.io.FileInputStream; import java.i...
  • wangzhi291
  • wangzhi291
  • 2016年11月28日 10:54
  • 1517
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java压缩文件/目录成ZIP包最新技巧
举报原因:
原因补充:

(最多只允许输入30个字)