解压缩中文问题,希望能够对你有所帮助

lengtouxiaoer 2004-07-30 11:50:51
这段时间解决解压缩中文问题,但是对于中文的压缩文件,总是出错,查了很多帖子,发现很多人都遇到这种情况,我刚刚解决这个问题,因此提出来,希望能够对你有所帮助。(多说一句,我看到很多帖子的回答者,并不一定真正的测试过这段代码,就将别人以前所贴得代码,一并粘过来,并且还是很高深的那种,殊不知很多提问着照着你贴得代码就试验,结果浪费了很多时间,因此希望有些人不要只是为了一些分,就将别人以前回答的帖子粘来粘去),说多了,多多包涵。
用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
...全文
61 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lengtouxiaoer 2004-07-30
  • 打赏
  • 举报
回复
对了,我的环境为
os:2003,jublder8,jrun4.
同时大家也要注意org.apache.tools.zip这个包在有些webserver中就有,所以你要是试验不成功,找找webserver中是否已经存在org.apache.tools.zip这个包,jrun4就有,害得我又从新写了一个jar包

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧