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文件,处理文件名不能为中文相关推荐

  1. Mac解压.zip文件出现文件名乱码解决方案

    Mac解压.zip文件出现文件名乱码解决方案 1 . 下载unar brew install unar 2 . 利用cd 命令到你要解压的目标文件路径下. 3. 使用unar,指定编码方式对指定文件进 ...

  2. java解压zip文件

    package com.chuangqi.tools;import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile ...

  3. Java解压zip文件(文本)压缩包

    2019独角兽企业重金招聘Python工程师标准>>> 说明:由于我们的日志收集到指定服务器上,会按天压缩成一个zip格式的压缩包,但是有时候需要对这些日志进行处理,人工解压在处理, ...

  4. Java解压Zip文件 小结

    1.首先,列举以下会提及到的三种解压方式:操作7z.exe解压.使用ant-1.9.6.jar解压.使用zip4j-1.3.2.jar解压. 2.第一种:java操作7z.exe解压文件,其实就是通过 ...

  5. java解压中文乱码_java使用解压zip文件,文件名乱码解决方案

    File outFileDir = new File(outDir); if (!outFileDir.exists()) { boolean isMakDir = outFileDir.mkdirs ...

  6. 【无标题】JAVA解压ZIP文件并解析Excel(easyExcel)

    返回值我用的是公司自定义的FT框架 具体返回值根据公司而定 一般在上传文件,PDF,Excel,zip压缩包时 后端基本都用MultipartFile接收 一定加上Http请求方便后续拼接路径 需求: ...

  7. java 解压文件_java实现解压zip文件,(亲测可用)!!!!!!

    项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...

  8. web上传zip大文件,java服务接收并解压ZIP文件

    目录 一.背景 二.知识点 三.代码实现 1.依赖 2.web 代码 3. java服务端 一.背景 公司产品小伙伴画了原型后,需要上传到服务器上供开发查看:由于文件数量很多,100M左右差不多要传3 ...

  9. Java 压缩与解压zip文件

    一.压缩文件大致可以分为三种:ZIP.JAR.GZ. 压缩流 在日常中经常会使用到像WinRAR或WinZIP这样的压缩文件,通过这些软件可以把一个很大的文件进行压缩以方便传输. 在JAVA中,为了减 ...

最新文章

  1. python-adb
  2. mac os10.11上使用proxychains
  3. linux学习之路--(六)用户及权限详解
  4. android 数据库表格数据库数据库中,Android SQLite数据库中的表详解
  5. python结束线程池正在运行的线程_python之线程与线程池
  6. Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
  7. 通过软件测试周期说明不同测试的使用情况!
  8. 血型算法php,血型排行榜!(真的很准)
  9. 通俗易懂的5G 入门科普!
  10. 209. 长度最小的子数组
  11. 微信js-sdk集成小结
  12. win7 自带计算机(for programmer)
  13. 二叉树的镜像(剑指 Offer 27)
  14. JavaScript高级实战教程,带你深入学习JS高级应用
  15. css3 3d 太阳系,CSS3实现的太阳系行星系统
  16. python怎么打开h5文件_Python 操作 HDF5文件
  17. 心跳包机制及Socket通信服务的心跳包
  18. 企业官网小程序有什么作用
  19. 正极前驱体生产废水除磷
  20. 怡丰机器人上市_京东物流要上市!外媒:初步讨论IPO 或筹资100亿美元

热门文章

  1. web图书销售管理系统_解读图书管理系统为书店带来的好处
  2. Linux开发篇 | Linux下制作EXT4文件系统镜像
  3. 测牛学堂:2023软件测试自动化python入门(字符串的格式化输出)
  4. Golang字符串函数用法
  5. sql server 提高查询和存储过程运行效率之UPDATE STATISTICS
  6. Matlab 图例 legend高级用法
  7. 外部排序剖析-以磁带为例
  8. 可能是最全面的MySQL8.0与MySQL5.7差异分析
  9. 毕业设计-基于SSM校园线上购物系统
  10. 时空幻境的体验分析:基于机制