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

java使用org.apache.commons:commons-compress解压 .7z压缩包

前言

java使用org.apache.commons:commons-compress解压 .7z压缩包

一、使用步骤

1.引入库

代码如下(示例):cpmpress需要用到xz依赖,不一起引入会报错。

<!-- https://mvnrepository.com/artifact/org.tukaani/xz -->
<dependency><groupId>org.tukaani</groupId><artifactId>xz</artifactId><version>1.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.21</version>
</dependency>

2.解压代码实例

    /*** 解压缩 .7z 格式的压缩包。** @param filePath 压缩包文件绝对路径。*/public viod SevenZCompress(String filePath) {/*逻辑:1. 解压 .7z 文件。2. 遍历压缩包中的每个文件。2.1. 过滤 MAC 压缩出来的多余文件夹。2.3. 获取原始文件名, 拼接要保存的目标文件路径。2.4. 保存文件。*/// [1] 解压 .7z 文件。try (SevenZFile sevenZFile = new SevenZFile(new File(filePath))) {// [2] 遍历压缩包中的每个文件。SevenZArchiveEntry entry;while ((entry = sevenZFile.getNextEntry()) != null) {// [2.1] 只解压文件, 跳过文件夹+过滤 MAC 压缩出来的多余文件夹。if (!entry.isDirectory() && !StringUtils.startsWithIgnoreCase(entry.getName(), "__MACOSX")) {// [2.2] 获取原始文件名, 拼接要保存的目标文件路径。String originalFileName = entry.getName();String fileUid = super.nextId() + "";String outFilePath = "D:/" + entry.getName();// [2.3] 保存文件。File outFile = new File(outFilePath);File parent = outFile.getParentFile();if (!parent.exists()) {FileUtil.mkdir(parent);}// 获取到当前文件的输入流, 写出到目标文件即可。try (InputStream inputStream = sevenZFile.getInputStream(entry)) {// 这里使用了org.apache.commons.io 包下的 FileUtils 工具类FileUtils.copyInputStreamToFile(inputStream, outFile);}}}} catch (Exception e) {throw new RuntimeException("解压 .7z 文件异常: "+ Utils.truncateExceptionMessage(e));}}

3.附 FileUtils的依赖

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.16.1</version>
</dependency>

相关文章:

java使用org.apache.commons:commons-compress解压 .7z压缩包

前言 java使用org.apache.commons:commons-compress解压 .7z压缩包 一、使用步骤 1.引入库 代码如下&#xff08;示例&#xff09;&#xff1a;cpmpress需要用到xz依赖&#xff0c;不一起引入会报错。 <!-- https://mvnrepository.com/artifact/org.tukaani/xz --> …...

通过知识库系统实现卓越医疗保健

提供更好的患者治疗效果&#xff1b;提高医疗保健组织的效率和有效性。 利用 Baklib 的力量 Baklib 使患者、代理人和专业人员能够轻松采用知识库系统。 1.对于患者 通过自助在线知识库提供有关药品、测试、服务、康复等的信息&#xff0c;改善患者体验和健康结果。 2.对于…...

基于C语言从0开始手撸MQTT协议代码连接标准的MQTT服务器,完成数据上传和命令下发响应(华为云IOT服务器)

文章目录 一、前言二、搭建开发环境三、网络编程基础概念科普3.1 什么是网络编程3.2 TCP 和 UDP协议介绍3.3 TCP通信的实现过程 四、Windows下的网络编程相关API介绍4.1 常用的函数介绍4.2 函数参数介绍4.3 编写代码体验网络编程 五、访问华为云IOT服务器创建一个产品和设备5.2…...

程序员面试中的“八股文”:敲门砖还是绊脚石?

在现代技术行业中&#xff0c;“八股文”成为了程序员面试中的常见问题。“八股文”究竟能否在实际工作中发挥应有的作用&#xff0c;成了一个备受争议的话题。许多IT从业者都提出疑问&#xff1a;程序员面试到底考察的是什么&#xff1f;是工作能力、工作经验&#xff0c;还是…...

液位传感器- 从零开始认识各种传感器【二十四期】

液位传感器|从零开始认识各种传感器 1、什么是液位传感器 &#xff1f; 液位传感器是一种用于检测和测量液体位置和高度的装置&#xff0c;广泛应用于工业、农业、环保和家庭等领域。液位传感器可以实时监测液体的水平&#xff0c;以实现自动化控制和安全防护。 2、液位传感器…...

【c++】爬虫到底违不违法?

很多小伙伴都想知道爬虫到底违法吗&#xff0c;今天博主就给大家科普一下 爬虫本身并不违法&#xff0c;但使用爬虫采集数据可能涉及违法风险&#xff0c;具体取决于采集行为是否侵犯了他人的合法权益&#xff0c;尤其是隐私权和个人信息权。以下是对爬虫是否违法的详细分析&am…...

Python基础知识笔记——特殊符号

1. #&#xff1a;注释符号。在它后面的内容直到行尾都会被 Python 解释器忽略&#xff0c;通常用于添加注释说明代码。 2. &#xff1a;赋值运算符。用于将右侧的值赋给左侧的变量。 3. &#xff1a;等于运算符。用于比较两个值是否相等。 4. !&#xff1a;不等于运算符。用…...

Thinkphp仿华为商城源码/红色风格电脑手机数码商城系统网站源码

Thinkphp仿华为商城&#xff0c;主要实现了商品首页展示、用户意见、商品分类列表、商品搜索、商品详细展示、购物车、订单生成、在线付款、以及个人中心完善个人资料、用户修改收货地址、余额查询、消费查询、订单管理、商品评价、热销商品和最近商品浏览&#xff1b; 后台是…...

超有用的数据恢复方法!你一定不要错过!

无论我们当下所使用的是何种设备&#xff0c;例如电脑、U 盘、硬盘、相机、行车记录仪&#xff0c;都难以避免出现误删文件的情况。那么&#xff0c;这些被误删的数据究竟应当通过何种方式找回&#xff1f; 今日&#xff0c;为大家分享若干极为实用的数据恢复方法&#xff0c;望…...

CDH清理磁盘空间完全攻略和完整实现自动化脚本(大数据清除日志)

在CDH集群中,自动清除日志的意义非常重大。尤其是在内网环境下,运维人员无法随时登录服务器进行操作,或者是因为放长假等原因不能每天进行运维工作。这时,如果日志不自动清理,就会面临日志空间满了的问题,这可能造成CDH各组件无法正常工作,离线数仓计算完全停止。 考虑…...

vulhub:Apache解析漏洞apache_parsing

在Apache1.x/2.x中Apache 解析文件的规则是从右到左开始判断解析&#xff0c;如果后缀名为不可识别文件解析&#xff0c;就再往左判断。如 1.php.xxxxx 漏洞原理 Apache HTTPD 支持一个文件拥有多个后缀&#xff0c;并为不同后缀执行不同的指令。比如如下配置文件 AddType te…...

Raspberry Pi Docker 运行 IRIS

在 Raspberry Pi 上成功安装 Docker 后可以安装 IRIS 数据库。 安装的命令为&#xff1a; docker run --name my-iris -d --publish 1972:1972 --publish 52773:52773 intersystems/irishealth-community:latest-em-linux-arm64v8 注意&#xff0c;我们这里暴露了 2 个端口&a…...

【SQL Server】默认端口与自定义端口

目录 第4章&#xff1a;默认端口与自定义端口 SQL Server 默认端口号 更改 SQL Server 端口号 使用自定义端口的好处 示例&#xff1a;更改 SQL Server 端口为 1434 示例代码&#xff1a;更新连接字符串 安全注意事项 第4章&#xff1a;默认端口与自定义端口 SQL Serve…...

【笔记】Android 驻网(网络注册)状态变化的代码实现

背景 基于 Android U/V 代码。 疑问:注册状态是仅看数据吗?通过hasRegistered 确认?从代码看是data 和voice combine的 。 目标:分析注册过程中,Modem返回的code值得含义,以及MD和AP code的映射关系。 功能说明 网络已注册(驻网成功)跟能上网是两码事,比如驻网了也…...

SAP执行董事会变动

以下是SAP发布的新闻&#xff1a; SAP正在进行重大管理层重组&#xff0c;以配合其持续的云转型战略。首席营收官Scott Russell和首席营销与解决方案官Julia White将卸任其职务。SAP首席执行官Christian Klein将暂时接管销售组织的职责。 Scott Russell在全球范围内帮助SAP客…...

css-grid布局之美

一&#xff0c;grid布局概述 网格布局&#xff08;Grid&#xff09;是最强大的 CSS 布局方案。 它将网页划分成一个个网格&#xff0c;可以任意组合不同的网格&#xff0c;做出各种各样的布局。以前&#xff0c;只能通过复杂的 CSS 框架达到的效果&#xff0c;现在浏览器内置…...

Python面试整理-异常处理

在Python中,异常处理是一种通过捕获和处理运行时错误来使程序更加健壮和稳定的机制。以下是有关Python异常处理的详细介绍: 异常处理基础 try-except 结构 基本的异常处理结构是try-except块。当代码块中的某些代码可能会引发异常时,可以使用try块将其包含起来,并使用excep…...

linux服务之DHCP(centos7.6)

DHCP服务 1. DHCP介绍 DHCP(Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议)&#xff0c;被应用在局域网环境中&#xff0c;主要作用是集中管理、分配IP地址&#xff0c;使网络环境中主机动态的获取IP地址、网关地址、DNS服务器地址等信息&#xff0c;并能…...

2024最新的软件测试面试八股文

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升…...

C++ STL transform_reduce 用法

一&#xff1a;功能 计算两个向量的内积&#xff0c;它是 std::inner_product 的泛化版本&#xff0c;支持lambda表达式自定义运算。 二&#xff1a;用法 #include <iostream> #include <vector> #include <numeric> #include <execution>int main()…...

ModTheSpire终极指南:为《杀戮尖塔》构建安全高效的模组生态

ModTheSpire终极指南&#xff1a;为《杀戮尖塔》构建安全高效的模组生态 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 在游戏模组开发领域&#xff0c;安全性与扩展性往往难以兼得。…...

openclaw-nerve:构建自包含应用包,彻底解决跨平台部署难题

1. 项目概述与核心价值最近在折腾一些自动化脚本和工具链&#xff0c;发现很多开源项目在依赖管理、环境配置和跨平台部署上&#xff0c;依然存在不小的摩擦。一个典型的场景是&#xff1a;你从GitHub上clone了一个看起来很酷的项目&#xff0c;满心欢喜地准备跑起来看看效果&a…...

长期使用Taotoken的Token Plan套餐在项目成本控制上的实际感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken的Token Plan套餐在项目成本控制上的实际感受 1. 项目背景与成本挑战 在持续数月的项目开发与迭代过程中&#x…...

科技与科学领域重点新闻摘要-2026年5月13日

科技与科学领域重点新闻摘要 日期: 2026年5月13日 1. Nature发布2026年最值得关注的七大技术 核心要点: 《自然》杂志评选出2026年七大关键技术&#xff0c;包括异种生物器官移植、AI天气预报、可控核聚变、光学显微脑图谱、mRNA疗法、高精度天文成像和量子计算&#xff0c;这…...

手机号快速查询QQ号:3步找回遗忘账号的实用指南

手机号快速查询QQ号&#xff1a;3步找回遗忘账号的实用指南 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经因为忘记QQ号而无法登录&#xff1f;手机号查询QQ号工具正是为你量身打造的解决方案&#xff01;这款基于Python…...

微信QQ防撤回终极指南:3分钟学会永久保留聊天记录

微信QQ防撤回终极指南&#xff1a;3分钟学会永久保留聊天记录 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com/Gi…...

在Android 9上用vsomeip 3.3.8实现跨进程通信:一份保姆级编译与配置指南

在Android 9上实现跨进程通信&#xff1a;vsomeip 3.3.8编译与配置实战 在车载以太网和智能座舱系统开发中&#xff0c;跨进程通信&#xff08;IPC&#xff09;是基础且关键的技术环节。对于Android平台开发者而言&#xff0c;如何在NDK环境下高效实现Linux进程间通信&#xff…...

企业级应用如何利用Taotoken多模型能力优化AI服务调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业级应用如何利用Taotoken多模型能力优化AI服务调用 在构建依赖大语言模型的企业级应用时&#xff0c;开发团队常面临模型选型单…...

MediaCreationTool.bat:Windows部署自动化脚本封装架构深度解析

MediaCreationTool.bat&#xff1a;Windows部署自动化脚本封装架构深度解析 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

ChromaControl:如何用智能技术终结RGB设备控制混乱局面

ChromaControl&#xff1a;如何用智能技术终结RGB设备控制混乱局面 【免费下载链接】ChromaControl 3rd party device lighting support for Razer Synapse. 项目地址: https://gitcode.com/gh_mirrors/ch/ChromaControl 想象一下这样的场景&#xff1a;你的桌面上摆放着…...