您好,欢迎访问一九零五行业门户网

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php

atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
1. jdk zip 跟apache ant zip 1
2. apache ant包进行zip文件压缩,upzip 大概流程.. 1
3. 读文件名称ok,但是cant读取到input说npe.. 2
4. ant1.8.2.jar 2
5. #---详细code 2
6. 参考 4
1.   jdk zip 跟apache ant zip  
下面实现的功能是zip文件中的图像文件解压到当前目录下,用jdk自带的处理zip文件的代码处理的,但是不能处理中文名称的文件,要不然就会出错。
下面是用的apache的zip文件处理包进行处理的,可以处理中文名称的文件,功能跟上面的一样。
使用apache ant version1.7的tools.zip来解压zip文件,解决中文问题
1.7 blow的好像还是不支持中文..
作者:: 老哇的爪子 attilax 艾龙,  email:1466519819@qq.com
2. apache ant包进行zip文件压缩,upzip 大概流程.. 许多年前就遇到过这种业务,对zip标准压缩文件解压。之前写的操作类现在找不到了,最近项目中又要处理这种业务,所以重新写了一个。java提供 了处理zip包的api。但是对中文支持不是很好,所以我直接用apache ant里的zip操作api来进行处理。ant的api解决了中文支持问题,而且用起来也非常方便。以下是操作类。
以下的类只是用到apache的一小部分功能。具体更多的api,请参考文档。在此不多说明了。
* 在项目中导入apache的ant.jar包到lib中
3. 读文件名称ok,但是cant读取到input说npe..  
cause:::encode问题.. 默认好像是utf8..but 实际是gbk... 
org.apache.tools.zip.zipfile zipfile =new zipfile(zipfilename, gbk);
二、在unzipfiles方法中直接使用zipfile zip = new zipfile(zipfile); 解压缩时发现中文仍然乱码,改成zipfile zip = new zipfile(zipfile,“gbk”); 后中文正常了,可能和项目具体配置与运行环境有关吧。
4. ant1.8.2.jar  
5. #---详细code /**
 * 解压静态方法
 * @param zipfilename
 * @param outputdirectory
 * @throws exception
 */
public static void extract(string zipfilename,string outputdirectory,string encode) throws exception{
try {
// = utf-8;
org.apache.tools.zip.zipfile zipfile =new zipfile(zipfilename, encode);
//new org.apache.tools.zip.zipfile(zipfilename);
java.util.enumeration e = zipfile.getentries();
org.apache.tools.zip.zipentry zipentry = null;
while (e.hasmoreelements()){
zipentry = (zipentry)e.nextelement();
 system.out.println(unziping +zipentry.getname());
 try {
 upzip(outputdirectory, zipfile, zipentry);
} catch (zipentryisnullex e2) {
 system.out.println(e2.getmessage());
 system.out.println(------------);
}
}
}
catch (exception ex){
system.out.println(解压文件异常+ex.getmessage());
ex.printstacktrace();
}
}
private static void upzip(string outputdirectory, org.apache.tools.zip.zipfile zipfile, org.apache.tools.zip.zipentry zipentry) throws  ioexception, zipexception, filenotfoundexception, zipentryisnullex {
if (zipentry.isdirectory()){
string name=zipentry.getname();
name=name.substring(0,name.length()-1);// for del fesyegeor
mkdirs(outputdirectory+file.separator+name);
//system.out.println(创建目录:+outputdirectory+file.separator+name);
}else{  //file entry o9o
string name=zipentry.getname();
string dir = name.substring(0,name.lastindexof(/));
mkdirs(outputdirectory+file.separator+dir);
//system.out.println(创建文件:+outputdirectory+file.separator+name);
file f=new file(outputdirectory+file.separator+zipentry.getname());
f.createnewfile();
inputstream in = zipfile.getinputstream(zipentry);
if(in==null)
throw new zipentryisnullex(zipentryisnullex:+name);
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();
}
}
6. 参考  
apache ant包进行zip文件压缩 - 抹去浮华,沉淀深度 - iteye技术网站.htm
基于apache zip包的压缩和解压缩程序_crusoe_新浪博客
其它类似信息

推荐信息