非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

用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);

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航