当前位置: 首页 > news >正文

JAVA解压文件到目标目录

解压压缩文件到指定目录,也可以接口接收压缩包进行处理

解压代码如下

package org.example.demo;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;/*** @author : 骑猪撞地球QAQ* @date : 2024/8/14 14:19* @Description :  解压文件demo*/public class Demo {public static void main(String[] args) throws IOException {//1.创建一个File表示要解压的压缩包File src = new File("E:\\zip\\测试压缩文件.zip");//2.创建一个File表示压缩的目的地File dest = new File("E:\\解压后");//调用方法unzip(src, dest);}/*** 解压文件* 解压的本质:把压缩包里面的每一个文件或者文件夹读取出来,按照层级拷贝到目的地中* 方法可以优化,用try catch包起来,zip.close() 可以放在finally 中处理* @param src  压缩文件* @param dest 解压到目标文件内* @throws IOException*/public static void unzip(File src, File dest) throws IOException {// 创建一个解压缩流用来读取压缩包中的数据ZipInputStream zip = new ZipInputStream(new FileInputStream(src), Charset.forName("GBK"));// 获取压缩包里面的每一个ZipEntry对象ZipEntry entry;// 表示当前在压缩包中获取的文件或者文件夹while ((entry = zip.getNextEntry()) != null) {if (entry.isDirectory()) {//文件夹:需要在目的地dest处创建一个同样的文件夹File file = new File(dest, entry.toString());file.mkdirs();} else {//文件:需要读取压缩包中的文件,并把他存到目的地dest文件夹中(按照层级目录存放)FileOutputStream fos = new FileOutputStream(new File(dest, entry.toString()));int b;while ((b = zip.read()) != -1) {// 写入文件fos.write(b);}fos.close();// 压缩包中的一个文件处理完毕zip.closeEntry();}}// 一定要关闭流zip.close();}
}
如果是前端传入的压缩文件:
		// 使用MultipartFile接收文件,转为File //压缩包存储路径String temp = "E:\\face\\import\\";File destFile = FileUtil.mkdir(temp);try {//步骤1、把上传的压缩包文件保存到指定压缩包路径multipartFile.transferTo(destFile);} catch (IOException e) {//运行报错直接返回错误信息log.error(e.getMessage());}// 步骤2、调用Hutool的ZipUtil压缩工具类的unzip方法来进行对压缩包文件的解压,解压到临时文件内File mkdir = FileUtil.mkdir(temp + "1");// 调用上面的方法,传入destFile、mkdir 既可进行解压

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Nginx系列-负载均衡
  • 思科静态路由配置1
  • 实训日记day27
  • 热搜|“月薪4300一个月的存钱计划”,普通人如何实现财富自由?
  • C:每日一题:单身狗
  • 汇昌联信做拼多多店铺如何运营?
  • 微信小程序 for,if语法 事件对象,事件传参
  • 岗位信息采集全攻略:两种方法快速获取招聘信息
  • Mariadb数据库本机无密码登录的问题解决
  • Go语言排序艺术:sort包的精妙运用
  • 数据集与数据库:有什么区别?
  • C++ 之动手写 Reactor 服务器模型(一):网络编程基础复习总结
  • 浅谈C语言位段
  • springsecurity的学习(四):实现授权
  • 如何使用Wireshake解密Wi-Fi QoS Data报文?
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • avalon2.2的VM生成过程
  • co模块的前端实现
  • ES6简单总结(搭配简单的讲解和小案例)
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript 奇技淫巧
  • JDK9: 集成 Jshell 和 Maven 项目.
  • LintCode 31. partitionArray 数组划分
  • rabbitmq延迟消息示例
  • SSH 免密登录
  • yii2中session跨域名的问题
  • 产品三维模型在线预览
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 构建工具 - 收藏集 - 掘金
  • 机器学习 vs. 深度学习
  • 通过git安装npm私有模块
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用Visual Studio开发以太坊智能合约
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • $.ajax中的eval及dataType
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计高校学生选课系统
  • (三)模仿学习-Action数据的模仿
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ../depcomp: line 571: exec: g++: not found
  • .naturalWidth 和naturalHeight属性,
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET命名规范和开发约定
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)