用java.util.zip制作zip压缩文件时,如果制作的压缩文件有中文文件名或中文目录,用WinZip、WinRar解压时会有乱码, 同样,用java.util.zip解压WinZip、WinRar打包的压缩文件时,中文也是乱码,主要原因是因为java.util.zip使用编码和WinZip和WinRar使用的不同,在网上找了半天,发现只有两种解决方法:
1、修改import java.util.zip.ZipInputStream和ZipOutputStream。
2、使用Apache Ant里提供的zip工具。
-------------------------------------
已找到解决方法,就是用Ant的zip来实现,Ant里面可以指定编码,而java.util.zip是写死了的,只能用UTF-8,呵呵
-------------------------------
不要使用java.util.zip的包,用ant.jar放到classpath中
//在classpath中引入ant.jar的包
import java.io.*;
import java.util.*;
import java.io.File;
import org.apache.tools.zip.*;
public class CDGGzip
{
//boolean packFrame = false;
private File srcPath =new File("d:"+File.separator+"邢晓宁");
private String outFilename=new String("d:"+File.separator+"邢晓宁.zip");
private int len=srcPath.listFiles().length;
private String[] filenames = new String[len];
public void setSrcPath(String src){
srcPath=new File(src);
}
public File getSrcPath(){
return srcPath;
}
public void setOutFilename(String out){
outFilename=out;
}
public String getOutFilename(){
return outFilename;
}
public void gzip(){
byte[] buf = new byte[1024];
try {
File[] files = srcPath.listFiles();
for(int i=0;i<len;i++)
{
//if(!files[i].isDirectory())
filenames[i]=srcPath.getPath()+File.separator+files[i].getName();
}
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
for (int i=0; i<filenames.length; i++)
{
FileInputStream in = new FileInputStream(filenames[i]);
out.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i].getName()));
int len;
while ((len = in.read(buf)) > 0)
{
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
}
out.close();
}
catch (IOException e)
{
System.out.println(e);
}
}
public static void main(String arg[]){
CDGGzip cdggzip=new CDGGzip();
cdggzip.gzip();
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/thefirstwind/archive/2005/08/04/445978.aspx
分享到:
相关推荐
org.apache.tools.ant.taskdefs.Java org.apache.tools.ant.taskdefs.Move org.apache.tools.ant.taskdefs.Nice org.apache.tools.ant.taskdefs.Pack org.apache.tools.ant.taskdefs.Rmic org.apache.tools.ant...
在Java中,我们通常使用`ZipOutputStream`来创建ZIP文件,`ZipInputStream`来读取和解压缩文件。下面是一个简单的压缩文件到ZIP的例子: ```java import java.io.*; import java.util.zip.*; public class JavaZip...
总的来说,"apache-ant-zip.jar"和"ZipUtil.java"为开发者提供了解决中文乱码问题的工具和方法,使得在使用Apache Ant进行构建过程中,可以正确地处理包含中文文件名的ZIP文件,从而提高项目的可移植性和用户体验。...
### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....
例如,你可以使用Ant的`<zip>`任务来创建ZIP文件,通过指定`encoding`属性来解决中文乱码问题: ```xml <zip destfile="output.zip" encoding="UTF-8"> **/*"/> </zip> ``` 在这个Ant脚本中,`<zip>`...
在Java编程环境中,我们经常会遇到处理压缩文件,如ZIP或JAR格式的文件。"处理解压问题jar.zip"这个标题暗示我们可能遇到了一个特定的解压缩问题,特别是在尝试解压一个名为“jar.zip”的文件时。描述中提到的异常...
因此,如果ZIP文件中的文件名包含中文,使用`java.util.zip`进行操作时,中文文件名可能会出现乱码。为了解决这个问题,开发者需要手动设置正确的字符编码,通常是UTF-8,来确保中文文件名能够正确处理。 Ant是一个...
总的来说,Java的`java.util.zip`包为处理压缩文件提供了强大的支持,包括ZIP和JAR格式。通过创建如`CompressFileUtils`这样的工具类,我们可以方便地实现文件的解压缩操作,这对于处理资源文件、打包应用或在网络上...
Java标准库提供了一个名为`java.util.zip`的包,其中包含了一些类(如ZipOutputStream)用于创建ZIP格式的压缩文件。然而,这个过程通常涉及较多的代码和细节处理,而Ant提供了一种更为便捷的方法来完成这项任务。 ...
项目中碰到问题.jdk zipEntry 压缩中文文件名乱码 ... 如果仅用到压缩,就加入ant.jar 就导致引入了一些不必要的文件,所以我找到Ant1.8的源码,然后只把需要的那一部分编译打包成了一个jar文件,供大家使用
在`ZipUtil`中,我们可以定义两个主要方法:`compress`用于压缩文件或目录,`unzip`用于解压缩ZIP文件。 ```java import org.apache.tools.ant.Project; import org.apache.tools.ant.types.FileSet; import org....
在这个场景中,我们使用的工具有两个核心部分:`ant.jar` 和 `ZipTools.java`。 `ant.jar` 是Apache Ant的库文件,它是一个基于Java的任务驱动的构建系统。Ant广泛用于自动化Java项目的构建、编译、测试和打包过程...
此外,如果你在其他Java压缩库或API中遇到类似问题,可以考虑采用类似的方法,即明确指定编码方式,比如在使用`java.util.zip`时,可以使用`ZipOutputStream`的`setEncoding()`方法来指定编码。但是,通常情况下,...
本文将详细介绍如何使用`java.util.zip`包中的类来压缩文件及目录,并解决其中的一个常见问题——中文文件名或目录名的支持问题。 #### 一、Java自带压缩工具简介 Java标准库提供了`java.util.zip`包来处理文件的...
在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,...
这篇内容将深入讲解如何使用Java实现ZIP文件的压缩和解压功能,并结合给定的`ant.jar`库和`ZipUtil.java`源代码文件来理解其实现原理。 首先,`ant.jar`是Apache Ant的库文件,Ant是一个基于Java的构建工具,它可以...
标题提到的"java解压缩zip代码与用到的jar包"主要涉及了Java对ZIP文件的操作,以及一个名为`ant.jar`的第三方库。`ant.jar`是Apache Ant的核心库,它是一个基于Java的任务执行工具,广泛用于构建项目,其中包含了...
本篇文章将深入探讨`ant.jar`的用途、功能以及如何在Java项目中使用它来优化文件压缩操作。 `ant.jar`是Apache Ant的核心库,Ant是一个基于Java的构建工具,广泛用于自动化Java项目的构建、测试和部署过程。这个...
本教程将详细介绍如何使用`zip4j`库以及提供相关的使用示例。 首先,`zip4j`库的核心功能包括: 1. **创建ZIP文件**:可以将多个文件或目录添加到一个新的ZIP文件中。 2. **添加文件到现有ZIP**:如果ZIP文件已经...
7. `META-INF`:这个目录是Java存档(JAR)文件的标准部分,通常包含MANIFEST.MF文件,描述了JAR的内容和版本信息。 8. `src`:源代码目录,包含了项目的Java源代码或其他源代码文件。 综上所述,这个zip文件可能...