用java.util.zip制作zip压缩文件时,如果制作的压缩文件有中文文件名或中文目录,用winzip、winrar解压时会有乱码, 同样,用java.util.zip解压winzip、winrar打包的压缩文件时,中文也是乱码,主要原因是因为java.util.zip使用编码和winzip和winrar使用的不同,在网上找了半天,发现只有两种解决方法: //在classpath中引入ant.jar的包 public class cdggzip public void gzip(){ out.closeentry(); out.close();
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中
import java.io.*;
import java.util.*;
import java.io.file;
import org.apache.tools.zip.*;
{
//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;
}
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);
}
in.close();
}
}
catch (ioexception e)
{
system.out.println(e);
}
}
public static void main(string arg[]){
cdggzip cdggzip=new cdggzip();
cdggzip.gzip();
}
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器