Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
2. Apache Ant包进行ZIP文件压缩,upzip 大概流程..
1
3. 读文件名称ok,但是cant读取到input说NPE..
2
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的更多相关文章
- atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php
atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php 1. 压缩算法的归类::: 纯算法,带归档算法 1 2. zlib(适合字符串压缩) 1 3. gz ...
- Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode
Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...
- atitit.人脸识别的应用场景and使用最佳实践 java .net php
atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景 1 2. 框架选型 JNI2OpenCV.dll and JavaCV 1 3. Url ap ...
- atitit.人脸识别的应用场景and使用最佳实践 java .net php
atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景1 2. 标准化的api1 3. 框架选型 JNI2OpenCV.dll and JavaCV ...
- Atitit.500 503 404错误处理最佳实践oak
Atitit.500 503 404错误处理最佳实践oak 1. 错误处理的流程(捕获>>日志>>db>>email alert) 1 2. 错误的捕获:strut ...
- Atitit 拦截数据库异常的处理最佳实践
Atitit 拦截数据库异常的处理最佳实践 需要特殊处理的ex 在Dao层异常转换并抛出1 Server层转换为业务异常1 需要特殊处理的ex 在Dao层异常转换并抛出 } catch (SQLExc ...
- atitit.表格的绑定client side 最佳实践
atitit.表格的绑定client side 最佳实践 1. 框架选型 1 2. #---原理和流程 1 1. 方法1 1 2. Dwr 例子 1 3. 方法2 2 4. Jq例如 2 1. 框架选 ...
- atitit.编辑表单的实现最佳实践dwr jq easyui
atitit.编辑表单的实现最佳实践dwr jq easyui 1. 提交表单 1 2. 表单验证 1 3. 数据保存使用meger方式取代save&update方式 1 3.1. Filte ...
- atitit.标准时间格式 相互转换 秒数 最佳实践
atitit.标准时间格式 相互转换 秒数 最佳实践 例如00:01:19 转换为秒数 79,,and互相转换 一个思路是使用div 60 mod...只是麻烦的... 更好的方法是使用stamp ...
随机推荐
- Jquery Mobile 动态添加元素然后刷新 转
Jquery Mobile 动态添加元素然后刷新 (2013-05-09 12:39:05) 转载▼ 标签: it 分类: Mobile jquery 表单元素每一个元素都有自己刷新的方法,每当改变它 ...
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- BIEE 11g 安装
1.安装oracle 创建字符集为AL32UTF8的实力MERIT sys密码merit 创建biee用户 create tablespace biee datafile 'D:\ORADATA\M ...
- Oracle中Lpad函数和Rpad函数的用法
http://blog.csdn.net/woshixuye/article/details/17262307 一.Lpad函数 lpad函数将左边的字符串填充一些特定的字符其语法格式如下:lpad ...
- ytxgnopyvw
Rt.不是我的博客被盗了 而是我要测试一下某网站是自动抓取我的博客还是手动抓取. 如果是手动抓取,那么该网站的管理员一定会看见这篇博文, 希望管理员能够自己反省. ytxgn只是为了百度搜索方便罢了.
- Jmeter应用初步介绍
一.工具介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资 ...
- Java MD5加密工具类
public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', ' ...
- 代码中修改组件的margin属性
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_ ...
- App开发的过程
直播App开发的过程 第一步:分解直播App的功能,我们以X客为例 视频直播功能,这是一款直播App最主要的功能,要能支持视频直播RTMP推流,使画面传输流畅.清晰(美颜后的清晰,你懂的聊天功能,用户 ...
- jsp_Scriptlet
在jsp中,最重要的部分就是Scriptlet(脚本小程序),所有嵌入在HTML代码中的Java程序都必须在使用Scriptlet标记出来.在JSP中总共有3种Scriptlet代码 1.第一种:&l ...