`
nannan408
  • 浏览: 1754979 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java用Ant.jar的zip写文件解决文件名中文问题(转)

 
阅读更多

 

package ejbModule.util;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

/**
 * 文件压缩(支持中文文件名)
 * 
 * @author gaoyusi
 * 
 */
public class FileHelper {

	/**
	 * 中文条件下文件(夹)压缩
	 * 
	 * @throws IOException
	 */
	public static void zipCompress(String src, String des) throws IOException {
		ZipOutputStream out = null;
		try {
			CheckedOutputStream cusm = new CheckedOutputStream(
					new FileOutputStream(des), new Adler32());
			out = new ZipOutputStream(new BufferedOutputStream(cusm));

			fileZip(new File(src), out, "");
		} finally {
			if (out != null) {
				out.close();
			}
		}
	}

	private static void fileZip(File file, ZipOutputStream out, String base)
			throws IOException {
		if (file.isFile()) {
			if (base.length() > 0) {
				out.putNextEntry(new ZipEntry(base));
			} else {
				out.putNextEntry(new ZipEntry(file.getName()));
			}

			BufferedReader in = new BufferedReader(new InputStreamReader(
					new FileInputStream(file), "ISO8859_1"));

			int c;
			while ((c = in.read()) != -1) {
				out.write(c);
			}
			in.close();

		} else if (file.isDirectory()) {
			File[] subFiles = file.listFiles();

			out.putNextEntry(new ZipEntry(base + File.separator));
			base = base.length() != 0 ? base + File.separator : "";

			for (File subFile : subFiles) {
				fileZip(subFile, out, base + subFile.getName());
			}
		}

	}

	public static void main(String[] args) throws IOException {
		FileHelper.zipCompress("d:\\test","d:\\test1.zip");
	}
}

 

注意引入Ant.jar.

 

分享到:
评论

相关推荐

    分离自Ant的ZIP包可解决中文文件名处理问题

    这个名是名离自ant原码的,由于java.util.zip处理中文文件名时有问题可以用这个包代替那个使用就不会有中文问题了,我加了一个ZipTool.java,这个就是一个示例文件和方法打包文件。 <br>特点: 一、自有原码不...

    JDK ZipEntry压缩中文文件名乱码解决

    项目中碰到问题.jdk zipEntry 压缩中文文件名乱码  上网查了下,有两种方法,一种修改jdk ZipInputStream及ZipOutputStream 的源文件,比较麻烦,不建议此项.  第二种 就是拿来主义,因为 开源项目 Ant 里已经有...

    apache-ant-zip.jar包及用法

    apache-ant-zip.jar包及用法 用过java做压缩或解压的都知道,jdk提供的zip只能按UTF-8格式处理,所有jdk提供的zip不能支持中文文件名,可以采用Apache的zip包解决中文文件名问题。

    java_zip压缩与解压缩(不支持中文,ant.jar包的下支持)

    随便写的,大家看看吧。java.util.zip包的下Zip不支持中文文件名,不过ant.jar下支持(可以去官网下)。原理差不多,代码也是差不多。

    ant-1.9.1.jar中文-英文对照文档.zip

    解压 【***.jar中文文档.zip】,再解压其中的 【***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。...

    ant-1.10.1.jar中文-英文对照文档.zip

    解压 【***.jar中文文档.zip】,再解压其中的 【***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。...

    java上传并自动解决ZIP文件

    我整理了一下,把ZIP包的原码重新编译,不要ant.jar,将压缩和解压放在ZipTool.class包中支持中文文件名,支持针对目录压缩,做了上传后自动解压测试! <br>特点: 一、自有原码不依赖ant.jar 二、支持中文...

    antZip1.8.jar

    解决中文文件名乱码的jar.从最新ANT1.8里提取出来打的包

    java 下载文件 压缩且删除源文件(支持文件夹与文件)

    1、指定文件可下载并且服务器端会删除此文件。 2、指定文件夹(文件夹中必须有一个文件),程序会自动的压缩文件为 zip,然后下载删除源文件与压缩文件...注意一点:中文的文件名会出现乱码(解决方案:导入ant.jar)

    Java操作Ant压缩和解压文件及批量打包Anroid应用

    1. java提供的类对于包括有中文字符的路径,文件名支持不够好,你用其它第三方软件解压的时候就会存在乱码。而ant.jar就支持文件名或者路径包括中文字符。 2. ant.jar提供了强大的工具类,更加方便于我们对压缩与...

    Ant 1.9.2 API (CHM格式)

    注: FileSet的setIncludes, 和setExcludes方法输入pattern, pattern是一个使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目录,“*.*”代表说有文件, “*.java”代表所有扩展名为java的文件。...

    fckedit编辑器

    这样解决了文件上传的中文乱码问题. 但是在控制台显示的中文内容还是乱码,但是没关系,我们没必要去看控制台下的中文 ----------------------------------------------------------------another FCKeditor2.4.2 ...

    好用的代码生成源码

    类似ant可以变量引用,引用环境变量使用${env.JAVA_HOME}, 引用System.getProperties()直接引用 2.自动替换generator.properties中的句号(.)为反斜杠,设置key为key+"dir"后缀 示例: pkg=...

    新版Android开发教程.rar

    程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...

Global site tag (gtag.js) - Google Analytics