package com.chuangqi.tools;import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;import java.io.*;
import java.util.Enumeration;public class FileUnZipUtils {/*** 解压zip文件* @author xiyue* @param sourceFile,待解压的zip文件;*        toFolder,解压后的存放路径* @throws Exception**/public static void zipToFile(String sourceFile, String toFolder) throws Exception {String toDisk = toFolder;// 接收解压后的存放路径ZipFile zfile = new ZipFile(sourceFile, "gbk");// 连接待解压文件 "utf-8"会乱码Enumeration zList = zfile.getEntries();// 得到zip包里的所有元素ZipEntry ze = null;byte[] buf = new byte[1024];while (zList.hasMoreElements()) {ze = (ZipEntry) zList.nextElement();if (ze.isDirectory()) {// log.info("打开zip文件里的文件夹:"+ ze.getName() +"skipped...");File f = new File(toDisk+"/" + ze.getName());f.mkdirs();continue;}OutputStream outputStream = null;InputStream inputStream = null;try {// 以ZipEntry为参数得到一个InputStream,并写到OutputStream中outputStream = new BufferedOutputStream(new FileOutputStream(getRealFileName(toDisk, ze.getName())));inputStream = new BufferedInputStream(zfile.getInputStream(ze));int readLen = 0;while ((readLen = inputStream.read(buf, 0, 1024)) != -1) {outputStream.write(buf, 0, readLen);}inputStream.close();outputStream.close();} catch (Exception e) {// log.info("解压失败:"+e.toString());throw new IOException("解压失败:" + e.toString());} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException ex) {}}if (outputStream != null) {try {outputStream.close();} catch (IOException ex) {ex.printStackTrace();}}inputStream = null;outputStream = null;}}zfile.close();}/*** * 给定根目录,返回一个相对路径所对应的实际文件名.* * @param zippath*            指定根目录* * @param absFileName*            相对路径名,来自于ZipEntry中的name* * @return java.io.File 实际的文件* */private static File getRealFileName(String zippath, String absFileName) {// log.info("文件名:"+absFileName);String[] dirs = absFileName.split("/", absFileName.length());File ret = new File(zippath);// 创建文件对象if (dirs.length > 1) {for (int i = 0; i < dirs.length - 1; i++) {ret = new File(ret, dirs[i]);}}if (!ret.exists()) {// 检测文件是否存在ret.mkdirs();// 创建此抽象路径名指定的目录}ret = new File(ret, dirs[dirs.length - 1]);// 根据 ret 抽象路径名和 child// 路径名字符串创建一个新 File 实例return ret;}}

java解压zip文件相关推荐

  1. java解压zip文件,处理文件名不能为中文

    1.最近工作需要把压缩文件解压,经过测试有两种方法,一种是JDK自带的ZipFile,       另外一种是org.apache.tools.zip进行解压. 2.经测试,JDK自带的文件不能处理文 ...

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

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

  3. Java解压Zip文件 小结

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

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

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

  5. java csv文件tozip后损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...

    情景描述: 1.将本地数据备份成zip文件: 2.将备份的zip文件通过sftp上传到文件服务器: 3.将文件服务器上的zip文件下载到运行服务器: 4.将下载的zip文件解压到本地(文件大小超过50 ...

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

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

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

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

  8. Java 压缩与解压zip文件

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

  9. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

最新文章

  1. oracle实例无法启动也无法关闭
  2. 使用Git工具生成公钥与私钥
  3. 来自Riot 的一份游戏美术教程(四):环境美术
  4. 111. Minimum Depth of Binary Tree 二叉树的最小深度
  5. python拼图游戏代码,OpenCV Python实现拼图小游戏
  6. 《Android开发从零开始》——26.数据存储(5)
  7. 自己写cache server之网络框架处理——Oracle、Mysql都不靠谱儿(中)
  8. Exchange2003 备份与还原
  9. 下载pyboard的flash中的驱动程序_HASP加密狗驱动程序没有安装成功如何解决
  10. 软件产品测试报告模板
  11. 计算机网络的定义以及分类
  12. Excel如何快速在指定字符后面插入文本
  13. 企查查网站信息爬取1.0版
  14. 根据pc值确定出错的代码位置
  15. 再战双十一,阿里这回真的“上天”了!
  16. Linux内核踩坑笔记
  17. 毕业设计日志(18)
  18. python模拟火车票订票系统_pythonCCF 201609-2火车票购买,PythonCCF2016092,购票
  19. python 计算召回率的程序_python实现计算精度、召回率和F1值
  20. CentOS 7 安装 Development Tools

热门文章

  1. MATLAB_第二篇神经网络学习_BP神经网络
  2. EXCEL-2.让录制的宏高效运行
  3. Java系列之传值还是传址,你清楚了吗?
  4. AJAX案例 – 聊天机器人
  5. Waymo称已拿到关键性证据,案件审讯或推迟
  6. 关于码云的一些基本知识_快速掌握Git命令基础知识 进阶必备哦
  7. 网络工程师成长日记402-乌审旗某采气厂项目
  8. wgan 不理解 损失函数_WGAN
  9. JMM~Java Memory Model
  10. Linux debian安装Vim和Vim使用教程