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:[email protected]
转载请注明来源: http://blog.csdn.net/attilax
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_新浪博客
版权声明:本文博客原创文章。博客,未经同意,不得转载。