这段时间解决解压缩中文问题,但是对于中文的压缩文件,总是出错,查了很多帖子,发现很多人都遇到这种情况,我刚刚解决这个问题,因此提出来,希望能够对你有所帮助。(多说一句,我看到很多帖子的回答者,并不一定真正的测试过这段代码,就将别人以前所贴得代码,一并粘过来,并且还是很高深的那种,殊不知很多提问着照着你贴得代码就试验,结果浪费了很多时间,因此希望有些人不要只是为了一些分,就将别人以前回答的帖子粘来粘去),说多了,多多包涵。
用java 自带的zip类,我没有实现解压缩中文问题,不知是否我的方法不对,但是我目前采用了ant.jar,利用这个jar文件,的确可以实现解压缩中文问题。我将这个jar文件放在了我的机器上,大家可以下载ftp://202.97.215.161
user:zy
pass:1234
先杀毒,我机器好几天没杀毒了。
而引用这个jar包解压缩的源码如下:
package com.highcom.hcgip.basic.unzip;
/**
* <p>Title: gip3.1 JavaDoc</p>
* <p>Description:利用org.apache.tools.zip解决了解压zip时中文名称出错的情况 </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author zy
* @version 1.0
*/
import java.util.*;
import java.util.zip.*;
import java.io.*;
public class TryUnzip {
public TryUnzip() {
}
/**
*
* 解压处理
* @param zipFileName 要进行压缩处理的文件(d://aa.zip")
* @param outputDirectory 压缩处理后的文件路径(d://)
*/
public void unzip(String zipFileName,String outputDirectory) throws Exception{
try {
org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(zipFileName);
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry = null;
while (e.hasMoreElements()){
zipEntry = (org.apache.tools.zip.ZipEntry)e.nextElement();
System.out.println("unziping "+zipEntry.getName());
if (zipEntry.isDirectory()){
String name=zipEntry.getName();
name=name.substring(0,name.length()-1);
System.out.println("输出路径:"+outputDirectory+File.separator+name);
File f=new File(outputDirectory+File.separator+name);
f.mkdir();
System.out.println("创建目录:"+outputDirectory+File.separator+name);
}else{
File f=new File(outputDirectory+File.separator+zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out=new FileOutputStream(f);
//--------解决了图片失真的情况
int c;
byte[] by=new byte[1024];
while((c=in.read(by)) != -1){
out.write(by,0,c);
}
out.close();
in.close();
}
}
}
catch (Exception ex) {
}
}
public static void main(String[] args){
try{
TryUnzip test = new TryUnzip();
test.unzip("e://ok.zip","e://");
}catch(Exception e){e.printStackTrace(System.out);}
}
}
说明:1。由于明天休息,所以可能ftp就不开,所以希望下到的人多帮助那些没下到的人
2。必须为zip压缩文件,rar不行,并且目前只支持这种压缩格式
ok.zip
-----测试.txt
-----78.jpg
而这种目前不支持(就是压缩文件下为一个文件夹,文件夹中包含相应压缩文件,有时间我在做做)
ok.zip
-----test/测试.txt
-----test/78.jpg
对了,我的环境为
os:2003,jublder8,jrun4.
同时大家也要注意org.apache.tools.zip这个包在有些webserver中就有,所以你要是试验不成功,找找webserver中是否已经存在org.apache.tools.zip这个包,jrun4就有,害得我又从新写了一个jar包