当前位置: 首页 > 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()…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...