java解压zip文件,处理文件名不能为中文
来源:互联网 发布:51淘宝小号交易平台 编辑:程序博客网 时间:2024/04/28 02:16
1、最近工作需要把压缩文件解压,经过测试有两种方法,一种是JDK自带的ZipFile,
另外一种是org.apache.tools.zip进行解压。
2、经测试,JDK自带的文件不能处理文件名为中文的压缩文件(包括压缩文件包含的文件名)
原因是:压缩解压ZIP文件对文件名都是以UTF-8编码方式来处理的,而WinZip对文件名只会
以ASCII编码方式来处理
3、解决办法:Apache Ant有个包专门处理ZIP文件,可以指定文件名的编码方式。由此可以解决问题。
4、代码如下:
说明:zipFileName是文件的绝对路径(包含文件名称),outputDirectory是输出路径(不包含名称)
比如:zipFileName=D:\\pdf\\zip\\test测试.zip
outputDirectory=D:\\pdf\\zip
如需共同讨论请联系QQ:470312712
public static void unZip(String zipFileName, String outputDirectory)throws Exception {
try {
ZipFile zipFile = new ZipFile(zipFileName, "GB2312");
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
System.out.println("unziping " + zipEntry.getName());
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
System.out.println("创建目录:" + outputDirectory+ File.separator + name);
} else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
if (fileName.indexOf("/") != -1) {
createDirectory(outputDirectory, fileName.substring(0,fileName.lastIndexOf("/")));
fileName = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
}
File f = new File(outputDirectory + File.separator+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
- java解压zip文件,处理文件名不能为中文
- ubuntu下解决解压zip文件中文文件名乱码问题
- nodejs adm-zip 解压文件 中文文件名乱码
- Java中ZIP压缩与解压--中文文件名乱码解决办法
- java实现zip的压缩和解压(支持中文文件名)
- java实现zip的压缩和解压(支持中文文件名)
- java实现zip的压缩和解压(支持中文文件名)
- Java 压缩,解压zip文件(支持中文)
- java 解压zip中文文件 出现错误
- java 处理zip压缩/解压 文件/目录
- Java压缩解压zip文件的中文文件名在Windows和Linux环境下乱码问题的解决方案
- Java解压zip文件
- zip解压文件java
- java-zip解压文件
- JAVA解压ZIP文件
- Java解压zip文件
- java-解压zip文件
- java--解压zip文件
- 网络攻与防
- 作为一名计算机学院普通的大学生如何提高兴趣敲代码?谈谈我的感受,欢迎交流
- Android中ListView分页加载数据
- Cocos2dx 小技巧(八) visit的逆袭
- Ganymed SSH-2 for Java系列7之删除远程服务器上的非空目录(运用执行shell脚本的方式)
- java解压zip文件,处理文件名不能为中文
- spring性能提升
- java解析xml文件
- 百度地图显示多个标注点
- win8 系统下vs2010环境下 配置blitz 0.10 和boost_1_55_0
- centOS命令随笔(2)-shutdown
- Muduo 多线程模型:一个 Sudoku 服务器演变
- 详解Oracle临时表的几种用法及意义
- poj 3268 Silver Cow Party(最短路)