java 解压rar压缩包

news/2024/4/19 17:03:19/文章来源:https://blog.csdn.net/qq_34412985/article/details/131449127

记录下引入maven的相关坐标后,在archivers包下没有找到rar包

import org.apache.commons.compress.archivers.rar.RarArchiveEntry;

Java本身不提供解压RAR压缩包的功能,需要借助第三方库来实现。以下是使用Apache Commons Compress库来解压RAR压缩包的示例代码:

import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveException;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.rar.RarArchiveEntry;
import org.apache.commons.compress.archivers.rar.RarArchiveInputStream;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class RarExtractor {public static void extract(String rarFile, String destDir) throws IOException, ArchiveException {File destinationDir = new File(destDir);if (!destinationDir.exists()) {destinationDir.mkdirs();}try (ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream(ArchiveStreamFactory.RAR, new FileInputStream(rarFile))) {RarArchiveInputStream rarIn = (RarArchiveInputStream) in;RarArchiveEntry entry;while ((entry = (RarArchiveEntry) rarIn.getNextEntry()) != null) {if (entry.isDirectory()) {new File(destinationDir, entry.getName()).mkdirs();} else {File outputFile = new File(destinationDir, entry.getName());FileOutputStream out = new FileOutputStream(outputFile);IOUtils.copy(rarIn, out);out.close();}}}}public static void main(String[] args) throws IOException, ArchiveException {String rarFile = "path/to/your/rar/file.rar";String destDir = "path/to/your/destination/directory";extract(rarFile, destDir);}
}

这个示例代码通过解析RAR文件的文件头来提取压缩包中的文件。在解压过程中,他们将提取的内容写入到目标目录中的新文件中。要使用此示例代码,你需要先将Apache Commons Compress库添加到你的Java项目的类路径中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_325613.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单的手机记事本怎么把英文翻译成中文?

手机记事本是人们常用的辅助工具之一,在使用手机记事本记录内容的时候,除了我们平时使用较多的中文之外,也有人会记录一些英文内容。想要将手机记事本中的英文内容翻译成中文内容应该如何操作呢?以iPhone手机端敬业签记事本软件为…

GIS杂记(二):Arcgis对采样点进行裁剪,获取指定区域内的采样点

有时候需要对栅格数据进行采样处理,如果采样点过多则会使得采样时间过长,今天在进行数据采样时,使用了1km*1km的渔网建立的采样点,大概有1百万个点,程序运行时间大概4个小时,但是其中有绝大部分数据都是空值…

Css 基础:选择器,三大特性

1.emmet的 快速格式化代码 配置 "editor.formatOnType": true, "editor.formatOnSave": true 2.基础选择器 3.复合选择器 4.单行文本垂直居中原理 5.css背景 6.CSS三大特性 层叠性:相同选择器设置相同样式,发生在样式冲突时&#xf…

【PC】CPU与GPU

文章目录 CPU与主板CPU是什么主板是什么功能 GPU与显卡GPU是什么显卡是什么功能 CPU与GPU的关系 ALU: 算术单元(Arithmetic Unit):算术单元执行基本的算术运算,如加法、减法、乘法和除法。它能够对整数、浮点数和定点数…

Web服务器群集:LVS+Keepalived高可用群集

目录 一、理论 1.Keepalived 2.VRRP协议(虚拟路由冗余协议) 3.部署LVSKeepalived 高可用群集 二、实验 1.LVSKeepalived 高可用群集 三、问题 1.备服务器网卡启动报错 四、总结 一、理论 1.Keepalived (1)简介 Keepal…

Redis高可用群集---搭建(主从、哨兵、Cluster)

目录 Redis 高可用集群Redis 主从复制Redis 哨兵模式Redis 集群模式 Redis 高可用集群 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redi…

MySQL原理探索——22 MySQL有哪些“饮鸩止渴”提高性能的方法

不知道你在实际运维过程中有没有碰到这样的情景:业务高峰期,生产环境的 MySQL 压力太大,没法正常响应,需要短期内、临时性地提升一些性能。 我做项目的时候,就偶尔会碰上这种场景。用户的开发负责人说,不管…

Spring中bean使用方法

Spring框架是一个非常重要的开发工具,它提供了丰富的功能和模块,其中核心的概念之一就是Spring Bean。Spring Bean是Spring IoC容器中的一个对象,它负责管理一个Java对象的生命周期以及依赖注入。下面我将通过互联网场景下的相关背景内容来阐…

4通道AD采集子卡模块有哪些推荐?

FMC134是一款4通道3.2GSPS(2通道6.4GSPS)采样率12位AD采集FMC子卡模块,该板卡为FMC标准,符合VITA57.4规范,可以作为一个理想的IO模块耦合至FPGA前端,16通道的JESD204B接口通过FMC连接器连接至FPGA的高速串行…

分布式系统监控zabbix安装部署及自定义监控

系列文章目录 文章目录 系列文章目录一、zabbix1.zabbix的基本概述2.zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。3.zabbix 监控原理4.Zabbix 6.0 功能组件5. zabbix的监控对象6.zabbix的常用术语7.zabbix进程详解8.zabbix的监控框…

安装配置云计算模板机

安装虚拟机模板机 一、在VMware上安装Centos虚拟机二、修改虚拟机的ip、网关、DNS三、更换yum源3.1 更换本地yum源3.2 更换国内互联网Yum源 四、 安装net-tools和bash-completion五、 关闭防火墙和SELinux 学习云计算后续需要多个虚拟机,作为云计算集群的节点&#…

【近场社交项目】数据库系统期末设计——需求分析部分

【近场社交项目】数据库系统设计——需求分析😎 前言🙌1.需求求分析(用户部分为例)1.2用户数据字典1.2.1用户信息表(数据结构):数据项间的关系和结构定义: 1.2.2.个人资料表(数据结构…

【React组件通讯的三种方式】

React组件通讯的三种方式 父组件传递数据给子组件子组件传递数据给父组件 React组件之间的通讯分为三种: 父组件 →子组件子组件 →父组件兄弟组件 父组件传递数据给子组件 步骤: 父组件提供要传递的state数据给子组件标签添加属性,值为st…

LeetCode·每日一题·445. 两数相加 II·模拟

作者:小迅 链接:https://leetcode.cn/problems/add-two-numbers-ii/solutions/2328613/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-67qx/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权&#xff…

使用家庭宽带和摄像头,实现公网直播

那天去逛商场看到有个营业厅,本想进去问问有没有存话费送话费的活动,结果被忽悠办了一个19.9升千兆宽带加送一个路由器的业务。 网络环境验证 听他们说现在家庭宽带都是有公网IPV6地址的,立马用电脑试了下确实有IPV6地址。 赶紧随便写了几行…

记录使用ffmpeg把mp4转换成m3u8

背景:公司需要上一些视频资源,平均每一个都在600m以上,经过考虑以后采取视频分片以后上传到oss上进行加速播放的流程.这里记录一下使用ffmpeg进行转换视频格式的过程中的一些命令. 准备工作: 下载ffmpeg到本地,以及配置ffmpeg到环境变量中,这里就不多说了. 使用的时候先打开…

Jenkins之pipeline语法——2023.07

文章目录 一、概述二、Pipeline任务1、Pipeline Script 运行任务2、Pipeline script from SCM 通过代码库运行任务3、在 job(任务)中配置Pipeline script from SCM 三、Jenkinsfile 语法1、脚本式语法2、声明式语法1. agent :节点2. tool3. environment2. stages &a…

ATTCK(六)之ATTCK子项目atomicredteam测试环境安装与使用

ATT&CK子项目atomicredteam测试环境安装与使用 Atomicredteam的主站点为https://atomicredteam.io/,是一个攻击测试库,每个安全团队都可以执行这些测试来测试他们的防御控件。测试是有重点的,几乎没有依赖关系,并且以结构化格…

C++动态库使用

个人博客地址: https://cxx001.gitee.io 前言 Windows与Linux下面的动态链接库区别 1. 文件后缀不同 Linux动态库的后缀是 .so 文件,而window则是 .dll 文件。 2. 文件格式不同 (a)Linux下是ELF格式,即Executable and Linkab…

CANDENCE :简单贴装器件封装绘制

紧接candence:常见表贴焊盘绘制举例 简单贴装器件封装绘制 以0603封装电容为例,绘制其封装,这里会用到前面绘制的电容的焊盘。 1、打开PCB editor 软件工具 2、新建一个PACKGE symbol 文件,设置好路径和名称。点击ok确认 3、设置画布尺寸、原点位置、…