在项目中如果遇到解压缩 文件的话,可以直接使用这个工具类进行操作。不多说,直接上代码:

1. maven 依赖: 可能会有多余的,没有做处理

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build><dependencies><!-- easyExcel    --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>1.1.2-beat1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version></dependency><!--  apache  poi--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.8</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.8.RELEASE</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>9.0.21</version></dependency></dependencies>

2. 工具类代码:

package com.lq.file;import org.apache.commons.io.IOUtils;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;/***  <p>Description:压缩文件夹和文件</p>*  <p>@auther:lq</p>*/
public class ZipUtil {private  static String  folderName="";/***  压缩文件* @param src 要压缩的文件或目录的绝对路径* @param zipdSrc 输出的压缩文件的绝对路径*/public static void  zip(String src, String zipdSrc) throws IOException{zip(new File(src), new File(zipdSrc));}/***  压缩文件* @param src 要压缩的文件或目录的绝对路径* @param zipdSrc 输出的压缩文件*/public static void  zip(String src, File zipdSrc) throws  IOException{zip(new File(src), zipdSrc);}/***  压缩文件* @param src 要压缩的文件或目录* @param zipdSrc 输出的压缩文件的绝对路径*/public static void  zip(File src, String zipdSrc) throws IOException{zip(src,new File(zipdSrc));}/*** 压缩文件* @param src 要压缩的文件或目录的绝对路径* @param zipdSrc 输出的压缩文件的绝对路径* @param folerName*/public  static void zip(String src,String zipdSrc,String folerName){ZipUtil.folderName=folerName;}/*** @Description: 根据一个目录和一个子文件/目录得到File对象* @param src 要压缩的文件或目录* @param zipdSrc 输出的压缩文件* @update logs* @throws Exception*/public static  void zip(File src,File zipdSrc,String folerName) throws IOException{// 通过输入文件目录遍历找出所有的文件List<ZipEntry> ziplist=foreach(src);// 创建zip的输出流,用来输出zip文件的ZipOutputStream out = new ZipOutputStream(zipdSrc);for(ZipEntry zip: ziplist){File file=new File(src.getParent(),folerName+File.separator+zip.getName());out.putNextEntry(zip);FileInputStream in=new FileInputStream(file);byte[] buffer = new byte[1024 * 8];for(int len=0; (len = in.read(buffer)) != -1;){out.write(buffer,0,len);}in.close();out.flush();}out.close();}/**Description: 压缩文件* @param src 要压缩的文件或目录* @param zipdSrc 输出的压缩文件* @throws IOException*/public static  void  zip(File src,File zipdSrc)throws IOException{//获取文件目录下的所有文件List<ZipEntry> ziplist=foreach(src);//创建输出流ZipOutputStream out=new ZipOutputStream(zipdSrc);for(ZipEntry zip:ziplist){File file=new File(src.getParent(),zip.getName());out.putNextEntry(zip);FileInputStream in=new FileInputStream(file);byte [] buffer=new byte[1024*8];//如果读到最后没有数据。则返回-1for(int len=0; (len = in.read(buffer)) !=-1;){out.write(buffer,0,len);}in.close();out.flush();}out.close();}/*** 递归查找文件* @param file* @return*/private static List<ZipEntry> foreach(File file) {return foreach(file, "");}/***  @Description: 解压缩* @param src 需要解压的压缩文件* @param out 解压到的目录*/public static void unZip(File src,File out) throws IOException{// 先创建要解压的文件ZipFile zipFile=new ZipFile(src,"GB18030");//通过entries()循环读取来得到文件。  hasMoreElemerts() 用来判断是否有元素for(Enumeration<ZipEntry> entries = zipFile.getEntries(); entries.hasMoreElements();){//可以连续地调用nextElement()方法来得到 Enumeration枚举对象中的元素ZipEntry entry=entries.nextElement();File file = new  File(out,entry.getName());if(entry.isDirectory()){file.mkdirs();}else {File parent = file.getParentFile();if (!parent.exists()) {parent.mkdirs();}IOUtils.copy(zipFile.getInputStream(entry), new FileOutputStream(file));}}zipFile.close();}/*** @Description: 解压缩* @param src 需要解压的压缩文件* @param out 解压到的目录* @create: 2019-07-27 9:54* @update logs* @throws Exception*/public static  void  unZip(String src,String out) throws IOException{unZip(new File(src), new File(out));}/*** @Description: 解压缩* @param src 需要解压的压缩文件* @param out 解压到的目录* @create: 2019-07-27 9:54* @update logs* @throws Exception*/public static  void  unZip(File src,String out) throws IOException{unZip(src, new File(out));}/*** @Description: 解压缩* @param src 需要解压的压缩文件* @param out 解压到的目录* @create: 2019-07-27 9:54* @update logs* @throws Exception*/public static  void  unZip(String src,File out)throws IOException{unZip(new File(src), out);}/*** @Description: 递归获取指定路径下的所有压缩文件* @update logs* @throws Exception*/private static List<ZipEntry> foreach(File file, String path) {List<ZipEntry> list = new ArrayList<ZipEntry>();if (file.isDirectory()) {path += file.getName() + File.separator;for (File fo : file.listFiles()) {list.addAll(foreach(fo, path));}} else if (file.isFile()) {list.add(new ZipEntry(path.replace(folderName, "")+ file.getName()));}return list;}//测试public static void main(String[] args) throws Exception {//ZipUtil.zip("D:\\office\\解压缩测试", "D:\\office\\解压缩测试.zip");ZipUtil.unZip("D:\\office\\office.zip","D:\\office\\解压缩测试");}}

3. 测试结果:

解压文件

压缩文件

Java Zip解压缩文件夹工具类 ----ZipUtils相关推荐

  1. java删除linux上的文件或文件夹工具类

    java删除指定文件夹下的单个文件 public static boolean deleteFile(String fileName) {File file = new File(fileName); ...

  2. JAVA删除文件或者文件夹工具类

    import java.io.File;public class DeleteFileUtil {private static LoggerHelper loggerHelper = LoggerHe ...

  3. Java字符串、文件MD5工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120874209 本文出自[赵彦军的博客] 文章目录 Hex MD5Util 其他实 ...

  4. Java zip 压缩 文件夹删除,移动,重命名,复制

    FileUtil.java import java.io.*; import java.util.List; import java.util.zip.ZipEntry; import java.ut ...

  5. java inputtools_Java后台开发常用工具类

    本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接.格式转换.文件操作.发送邮件等等.提高开发效率,欢迎收藏与转载. 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ...

  6. java实现遍历文件夹下的文件及文件夹

    package com.gblfy.test;import java.io.File; import java.util.ArrayList; import java.util.LinkedList; ...

  7. Java代码实现解压文件包和压缩文件的工具类

    最近开发任务比较多,这两天陆陆续续整理了一点资料上传一下,这个是前段时间用到的解压和压缩文件的工具类,网上找了一些,自己补充一下,现在先分享一下,希望对各位同学有所帮助! package com.as ...

  8. java流与文件——java生成解压缩文件(夹)

    [0]README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件--java生成解压 ...

  9. java获取properties属性_java工具类中获取properties文件的属性

    记录获取properties文件属性的工具类 package org.jasig.cas.mylogin.util; import org.slf4j.Logger; import org.slf4j ...

最新文章

  1. c# hdf5 写string_聊一聊C#8.0中的 await foreach
  2. 反射获取有参数的构造方法并运行
  3. Linux cd后显示文件,关于linux系统显示文件的问题!
  4. 03-instancing 工程分析详解
  5. Java 8中的HashMap性能改进
  6. 荣耀V40联合天猫推出上门取旧送新服务 还可12期免息
  7. Hyperledger发布Burrow新版本,改进集成和开发体验
  8. Energetically Consistent Invertible Elasticity
  9. Spring 学习一 @Autowired
  10. 汪文君 java_汪文君JAVA多线程编程实战 视频教程 下载
  11. Linux上 如何查找yum安装包所缺缺少的依赖包及报错处理
  12. Yii中处理前后台登录新方法 | 饭饭博客
  13. 真实经历,互联网大厂升职加薪那些事
  14. 大型研发团队敏捷实践落地 - 基于SAFe的大规模敏捷协作
  15. 2022-2028年中国汽车设计行业发展现状调查及市场分析预测报告
  16. 卸载计算机更新程序包,Win7清除Win10更新安装包的方法
  17. maven中的一些依赖
  18. 数学和英语不好,能当程序员吗?
  19. Baxter环境安装
  20. FreeBSD开启SSH远程登录

热门文章

  1. 计算机excel和word,【2人回答】我的电脑上的Word和Excel没有了该怎么办?-3D溜溜网...
  2. matlab求三圆相交面积,matlab求n个相交圆的面积
  3. access和filemaker_Filemaker指南
  4. 基本绘图、随机生成器、字体
  5. php 新浪通行证登录 新浪微博登录 模拟登录 (浏览器版) 2016
  6. 被扣1000块工资了
  7. 他曾缔造了谷歌无人车 现在创业一年选择和谷歌不同的路 | AI英雄
  8. p2p流媒体电视直播平台用户量和访问量的秘密
  9. 如何搭建aparche mysql_用Ant安装和构建Hibernate项目
  10. [968]程序运行时报错:由于找不到mfc110.dll,无法继续执行代码的解决方法