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

转载请注明来源: 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();

);// for del fesyegeor

mkDirs(outputDirectory+File.separator+name);

//System.out.println("创建目录:"+outputDirectory+File.separator+name);

}else{  //file entry o9o

String name=zipEntry.getName();

,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;

];

){

,c);

}

out.close();

in.close();

}

}

6. 参考

Apache Ant包进行ZIP文件压缩 - 抹去浮华,沉淀深度 - ITeye技术网站.htm

基于apache zip包的压缩和解压缩程序_Crusoe_新浪博客

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php的更多相关文章

  1. atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php

    atitit.压缩算法 ZLib ,gzip ,zip   最佳实践  java .net php 1. 压缩算法的归类::: 纯算法,带归档算法 1 2. zlib(适合字符串压缩) 1 3. gz ...

  2. Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

    Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...

  3. atitit.人脸识别的应用场景and使用最佳实践 java .net php

    atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景 1 2. 框架选型 JNI2OpenCV.dll and JavaCV 1 3. Url ap ...

  4. atitit.人脸识别的应用场景and使用最佳实践 java .net php

    atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景1 2. 标准化的api1 3. 框架选型 JNI2OpenCV.dll and JavaCV ...

  5. Atitit.500 503 404错误处理最佳实践oak

    Atitit.500 503 404错误处理最佳实践oak 1. 错误处理的流程(捕获>>日志>>db>>email alert) 1 2. 错误的捕获:strut ...

  6. Atitit 拦截数据库异常的处理最佳实践

    Atitit 拦截数据库异常的处理最佳实践 需要特殊处理的ex 在Dao层异常转换并抛出1 Server层转换为业务异常1 需要特殊处理的ex 在Dao层异常转换并抛出 } catch (SQLExc ...

  7. atitit.表格的绑定client side 最佳实践

    atitit.表格的绑定client side 最佳实践 1. 框架选型 1 2. #---原理和流程 1 1. 方法1 1 2. Dwr 例子 1 3. 方法2 2 4. Jq例如 2 1. 框架选 ...

  8. atitit.编辑表单的实现最佳实践dwr jq easyui

    atitit.编辑表单的实现最佳实践dwr jq easyui 1. 提交表单 1 2. 表单验证 1 3. 数据保存使用meger方式取代save&update方式 1 3.1. Filte ...

  9. atitit.标准时间格式 相互转换 秒数 最佳实践

    atitit.标准时间格式 相互转换 秒数 最佳实践 例如00:01:19 转换为秒数  79,,and互相转换 一个思路是使用div 60 mod...只是麻烦的... 更好的方法是使用stamp ...

随机推荐

  1. Jquery Mobile 动态添加元素然后刷新 转

    Jquery Mobile 动态添加元素然后刷新 (2013-05-09 12:39:05) 转载▼ 标签: it 分类: Mobile jquery 表单元素每一个元素都有自己刷新的方法,每当改变它 ...

  2. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. BIEE 11g 安装

    1.安装oracle 创建字符集为AL32UTF8的实力MERIT  sys密码merit 创建biee用户 create tablespace biee datafile 'D:\ORADATA\M ...

  4. Oracle中Lpad函数和Rpad函数的用法

     http://blog.csdn.net/woshixuye/article/details/17262307 一.Lpad函数 lpad函数将左边的字符串填充一些特定的字符其语法格式如下:lpad ...

  5. ytxgnopyvw

    Rt.不是我的博客被盗了 而是我要测试一下某网站是自动抓取我的博客还是手动抓取. 如果是手动抓取,那么该网站的管理员一定会看见这篇博文, 希望管理员能够自己反省. ytxgn只是为了百度搜索方便罢了.

  6. Jmeter应用初步介绍

    一.工具介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资 ...

  7. Java MD5加密工具类

    public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', ' ...

  8. 代码中修改组件的margin属性

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_ ...

  9. App开发的过程

    直播App开发的过程 第一步:分解直播App的功能,我们以X客为例 视频直播功能,这是一款直播App最主要的功能,要能支持视频直播RTMP推流,使画面传输流畅.清晰(美颜后的清晰,你懂的聊天功能,用户 ...

  10. jsp_Scriptlet

    在jsp中,最重要的部分就是Scriptlet(脚本小程序),所有嵌入在HTML代码中的Java程序都必须在使用Scriptlet标记出来.在JSP中总共有3种Scriptlet代码 1.第一种:&l ...