`
nannan408
  • 浏览: 1783800 次
  • 性别: 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.jar解压缩zip包

    总的来说,利用Apache Ant的ant.jar库,无论是通过Java代码还是Ant构建文件,都能方便、高效地解压缩ZIP文件,而且对于包含中文文件名的情况,它提供了良好的支持。在实际开发中,理解并熟练运用这类工具可以极大地...

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

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

    apache-ant-zip.jar

    总的来说,"apache-ant-zip.jar"和"ZipUtil.java"为开发者提供了解决中文乱码问题的工具和方法,使得在使用Apache Ant进行构建过程中,可以正确地处理包含中文文件名的ZIP文件,从而提高项目的可移植性和用户体验。...

    ant.jar java工具

    `ant.jar`是一个非常重要的工具,尤其对于解决Java处理中文文件时可能出现的乱码问题。本篇文章将深入探讨`ant.jar`的用途、功能以及如何在Java项目中使用它来优化文件压缩操作。 `ant.jar`是Apache Ant的核心库,...

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

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

    JAVA解压ZIP多层目录文件(需ant.jar

    ### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....

    apache-ant-zip.jar包及用法

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

    基于ant.jar的文件压缩工具类

    本文将深入探讨如何利用ant.jar中的API创建一个自定义的文件压缩工具类,实现对文件和目录的zip与unzip操作,并关注编码设置的重要性。 首先,我们需要导入ant.jar库到项目中。在Java中,我们可以通过Maven或Gradle...

    ant-appportal-0.1.jar.zip

    标题中的"ant-appportal-0.1.jar.zip"是一个压缩文件,它包含了"ant-appportal-0.1.jar"和"ant.license.txt"两个文件。这个文件名暗示了这可能是一个与Apache Ant相关的应用门户(AppPortal)的组件,版本为0.1。...

    ant-eclipse-jvm1.2-1.0.jar.zip

    《Ant与Eclipse集成:JVM1.2版本1.0的jar.zip包解析》 在软件开发领域,Ant和Eclipse是两个重要的工具。Ant是Apache软件基金会下的一个Java项目,它是一个基于XML的构建工具,常用于自动化Java项目的构建、测试和...

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

    Ant使用了自己的实现来处理ZIP文件,其内部的`org.apache.tools.ant.types.ZipFileSet`和`org.apache.tools.ant.taskdefs.Zip`类在处理包含中文文件名的ZIP时表现得更为友好。Ant默认使用UTF-8编码,所以它能更好地...

    java压缩(zip)中文问题完美解决

    通过这种方式,Apache Ant的`ant.jar`包可以很好地解决Java标准库在处理中文文件名压缩时可能出现的乱码问题。确保在处理非ASCII字符时正确设置文件和编码,能有效避免类似问题的发生。 此外,如果你在其他Java压缩...

    ant-nodeps.jar.zip

    标题“ant-nodeps.jar.zip”指的是一个压缩文件,其中包含了Ant构建工具的一个特定版本,去除了外部依赖的jar包。这个文件的目的是为了方便开发者在没有其他额外库的情况下使用Ant。Ant是一个Java编写的开源构建工具...

    apache-ant-17.0.jar

    总的来说,Apache Ant 1.7.0.jar提供了解决Android ZIP解压中文乱码问题的功能,通过自定义解压字符编码,如设置为UTF-8,可以确保中文文件名在解压缩过程中的正确性。而`ZipEntry`是Java处理ZIP文件的核心类,虽然...

    ant-trax-1.6.2.jar.zip

    标题中的"ant-trax-1.6.2.jar.zip"是一个包含特定版本(1.6.2)的Ant Trax库的压缩文件,它被封装在`.zip`格式中。这个文件名暗示了该库是Java环境下的一个组件,因为`.jar`是Java档案文件的扩展名,用于存储类文件...

    java压缩zip文件解决中文乱码问题

    例如,你可以使用Ant的`<zip>`任务来创建ZIP文件,通过指定`encoding`属性来解决中文乱码问题: ```xml <zip destfile="output.zip" encoding="UTF-8"> **/*"/> </zip> ``` 在这个Ant脚本中,`<zip>`...

    ant-1.7.1(org.apache.tools.zip.ZipOutputStream).zip

    描述中提到的“解决ZipOutputStream压缩包内中文文件名乱码的问题,setEncoding("GBK")”,揭示了一个关键点:在使用`ZipOutputStream`创建包含中文文件名的Zip文件时,我们需要指定正确的字符编码。默认情况下,`...

    ant-jakarta-regexp-1.6.jar.zip

    "ant-jakarta-regexp-1.6.jar.zip" 是一个包含了Ant Jakarta Regexp 1.6版本的库文件,用于扩展Ant的功能,使其能够处理和操作基于正则表达式的任务。 Ant Jakarta Regexp库是Ant对Java正则表达式API的一个增强,它...

    ant-xalan2-1.6.1.jar.zip

    标题中的"ant-xalan2-1.6.1.jar.zip"是一个特定的文件名,它包含两个关键组件:`ant-xalan2-1.6.1.jar`和`.zip`。`.zip`表明这是一个压缩文件格式,通常用于归档和传输多个文件。在这个例子中,压缩包里面只有一个...

    ant-1.6-sources.jar.zip

    在Ant 1.6版本中,提供了一个名为"ant-1.6-sources.jar.zip"的压缩包,这个文件包含了Ant 1.6版本的源代码,对于学习和理解Ant的工作原理以及扩展其功能具有极高的价值。 首先,让我们深入了解Ant的核心概念。Ant的...

Global site tag (gtag.js) - Google Analytics