前言

Java语言解压缩文件,文件格式为zip 格式

程序

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.*;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;public class FileUtils {private static final Logger log = LoggerFactory.getLogger(FileUtils.class);private static final int buffer = 2048;private static String Path = "/Users/sheng";private static String ZipPath = "/Users/sheng.zip";/*** zip解压* @param srcFile        zip源文件* @param destDirPath     解压后的目标文件夹* @throws RuntimeException 解压失败会抛出运行时异常*/public static void unZip(String srcFile, String destDirPath) throws RuntimeException {long start = System.currentTimeMillis();File fileSource = new File(srcFile);// 判断源文件是否存在if (!fileSource.exists()) {throw new RuntimeException(fileSource.getPath() + "所指文件不存在");}// 开始解压ZipFile zipFile = null;FileOutputStream fos = null;InputStream is = null;try {zipFile = new ZipFile(srcFile);Enumeration<?> entries = zipFile.entries();while (entries.hasMoreElements()) {ZipEntry entry = (ZipEntry) entries.nextElement();log.info("解压" + entry.getName());// 如果是文件夹,就创建个文件夹if (entry.isDirectory()) {String dirPath = destDirPath + "/" + entry.getName();File dir = new File(dirPath);dir.mkdirs();} else {// 如果是文件,就先创建一个文件,然后用io流把内容copy过去File targetFile = new File(destDirPath + "/" + entry.getName());// 保证这个文件的父文件夹必须要存在if(!targetFile.getParentFile().exists()){targetFile.getParentFile().mkdirs();}targetFile.createNewFile();// 将压缩文件内容写入到这个文件中is = zipFile.getInputStream(entry);fos = new FileOutputStream(targetFile);int len;byte[] buf = new byte[buffer];while ((len = is.read(buf)) != -1) {fos.write(buf, 0, len);}// 关流顺序,先打开的后关闭fos.close();is.close();}}long end = System.currentTimeMillis();log.info("解压完成,耗时:" + (end - start) +" ms");} catch (Exception e) {throw new RuntimeException("unzip error from ZipUtils", e);} finally {if(fos!=null){try {fos.close();} catch (IOException e) {e.printStackTrace();}}if(is!=null){try {is.close();} catch (IOException e) {e.printStackTrace();}}if(zipFile != null){try {zipFile.close();} catch (IOException e) {e.printStackTrace();}}}}public static void main(String[] args) throws IOException {FileUtils.unZip(ZipPath,Path);}
}

Java解压Zip 压缩包相关推荐

  1. java解压zip压缩包报错MALFORMED问题解决

    使用 ZipArchiveInputStream zipInputStream = new ZipArchiveInputStream(file.getInputStream(), "GBK ...

  2. java读取zip文件名_java无需解压zip压缩包直接读取包内的文件名(含中文)

    java自带了java.util.zip工具可以实现在不解压zip压缩包的情况下读取包内文件的文件名:(注:只能是ZIP格式的,rar我试了不行)代码如下: public static String ...

  3. php 解压zip到目录下,php 解压zip压缩包内容到指定目录的实例

    目录结构: test test/index.php test/test_zip.zip test/test_zip <?php header('Content-type:text/html;ch ...

  4. 解压后java文字乱码_怎么解决java解压zip包出现乱码

    怎么解决java解压zip包出现乱码 发布时间:2020-06-23 09:02:42 来源:亿速云 阅读:107 作者:Leah 怎么解决java解压zip包出现乱码?相信很多没有经验的人对此束手无 ...

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

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

  6. Java递归解压zip压缩包

    场景:zip压缩包里面嵌套多层文件夹或者zip压缩包: 使用递归的方式进行解压,解压后得到的目录结构和压缩包目录结构完全一致,非常好用! package com.zhh.api.util;import ...

  7. java解压zip代码_Java解压zip文件(文本)压缩包

    说明:由于我们的日志收集到指定服务器上,会按天压缩成一个zip格式的压缩包,但是有时候需要对这些日志进行处理,人工解压在处理,显示对于大量的日志处理是不行的(效率太低),所以还是要采用程序自动解压效率 ...

  8. java util zip.zipexc,JAVA解压zip压缩文件的实例

    今天在弄一个东西,需要在PL/SQL中解压zip的压缩包,刚开始的时候是想着直接在PLSQL中调用java,在java里面调用unzip的shell命令来解析压缩文件,但是比较悲剧,一直老是失败,在尝 ...

  9. java解压zip与rar

    这两天,因为项目需要,涉及到文件夹的上传,想了很久,在网上也找了一些资料,都没有什么很好的办法,都是用插件之类的解决,后面就想到了上传压缩 文件,说到压缩文件,自然就会遇到,文件的解压缩问题,大家都知 ...

  10. java解压zip文件

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

最新文章

  1. 什么?分布式事务现在不是都在用么?你还不会?
  2. 用一句sql语句更新两个表并可更新对应的字段的值
  3. c++期末大作业_西城的家长注意了,北京小学校内期末考试越来越重要
  4. C#将dataGridView中显示的数据导出到Excel(大数据量超实用版)
  5. jquery 操作css 选择器
  6. Java 算法 矩阵乘法
  7. I.MX6 wm8962 0-001a: DC servo timed out
  8. jni 从c传递map到java_java_jni 本地调用接口DLL的编写样本,涉及数组传递,相关的 和C程序均已包括。 Develop 256万源代码下载- www.pudn.com...
  9. 深夜,基友给我发了个某短视频app,我没忍住把它给...
  10. python自带的pip版本过低 卸载pip重写安装V10
  11. 解决open-vm-tools安装时Failed to get unit file state for run-vmblockx2dfuse.mount
  12. 【CV】MobileNet:使用深度可分离卷积实现用于嵌入式设备的 CNN 架构
  13. easypoi导入校验跳过空行_Easy-POI是一款Excel导入导出解决方案组成的轻量级开源组件...
  14. LVM逻辑卷的创建,扩容和删除
  15. 12.账号和权限管理
  16. 让命令不尽然history历史纪录的一种方法
  17. 数字的整数次方——《剑指offer》
  18. 七年级计算机科学什么,2017年七年级信息技术教学计划
  19. 大数据能做什么,为什么学习大数据
  20. OPPO入股少儿编程教育平台编程猫 官网域名为纯字母域名codemao.cn

热门文章

  1. Redis 增加互斥锁
  2. Android webview数据获取 webview抓取
  3. VHDL_EDA课设_八音电子琴
  4. 基于STM32的超声波传感器测距(含代码)
  5. 基于AT89C51单片机的超声波传感器测距
  6. android4.4呼叫转移,安卓呼叫转移
  7. 人脸活体检测人脸识别:眨眼+张口
  8. lpush和rpush的区别_redis数据类型之list-lpush,rpush讲解
  9. IK和pinyin分词器
  10. java中lookup函数怎么用,excel Lookup查表函数的使用方法