java实现rar格式转换为zip

2024-06-03 18:36
文章标签 java 实现 zip 转换 格式 rar

本文主要是介绍java实现rar格式转换为zip,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

maven 依赖

  <dependency><groupId>com.github.junrar</groupId><artifactId>junrar</artifactId><version>7.5.4</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>
  • hutool-all 不是必须的,如果不想引入,下面代码中的对应位置自行修改即可。

实现代码


import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import com.github.junrar.Archive;
import com.github.junrar.exception.RarException;
import com.github.junrar.rarfile.FileHeader;import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.List;public class RarToZip {public static void main(String[] args) {String rootDir = "F:\\tmp\\1\\RarToZip\\";String destRootDir = "F:\\tmp\\1\\RarToZip\\";FileUtil.walkFiles(new File(rootDir),file -> {if (file.getName().endsWith(".rar")) {try {unrar(file.getPath(), destRootDir);} catch (RarException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}});File file1 = new File(destRootDir);File[] files = new File(destRootDir).listFiles(File::isDirectory);if (files == null){System.out.println("no file");return;}for (File file : files) {if (file.isDirectory()){System.out.println("zip:"+file.getPath());ZipUtil.zip(file);}}}public static void unrar(String rarFilePath, String outputDir) throws RarException, IOException {System.out.println("unrar " + rarFilePath + " to " + outputDir);File outputFolder = new File(outputDir);if (!outputFolder.exists()) {outputFolder.mkdirs();}try (Archive archive = new Archive(new FileInputStream(rarFilePath))) {FileHeader fileHeader;while ((fileHeader = archive.nextFileHeader()) != null) {String fileName = outputDir + File.separator + new String(fileHeader.getFileName().getBytes(), StandardCharsets.UTF_8);if (fileHeader.isDirectory()) {new File(fileName).mkdirs();} else {new File(fileName).getParentFile().mkdirs();try (InputStream fileInputStream = archive.getInputStream(fileHeader);FileOutputStream fileOutputStream = new FileOutputStream(fileName)) {byte[] buffer = new byte[1024];int read;while ((read = fileInputStream.read(buffer)) != -1) {fileOutputStream.write(buffer, 0, read);}}}}}}
}

总结

有需要的同学,自取。如有问题可以在评论区联系我。如果你觉得这篇文章对你有帮助请点赞收藏关注。

这篇关于java实现rar格式转换为zip的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Java 中的跨域问题解决方法

《Java中的跨域问题解决方法》跨域问题本质上是浏览器的一种安全机制,与Java本身无关,但Java后端开发者需要理解其来源以便正确解决,下面给大家介绍Java中的跨域问题解决方法,感兴趣的朋友一起... 目录1、Java 中跨域问题的来源1.1. 浏览器同源策略(Same-Origin Policy)1.

Java 关键字transient与注解@Transient的区别用途解析

《Java关键字transient与注解@Transient的区别用途解析》在Java中,transient是一个关键字,用于声明一个字段不会被序列化,这篇文章给大家介绍了Java关键字transi... 在Java中,transient 是一个关键字,用于声明一个字段不会被序列化。当一个对象被序列化时,被

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

golang float和科学计数法转字符串的实现方式

《golangfloat和科学计数法转字符串的实现方式》:本文主要介绍golangfloat和科学计数法转字符串的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望... 目录golang float和科学计数法转字符串需要对float转字符串做处理总结golang float

Logback在SpringBoot中的详细配置教程

《Logback在SpringBoot中的详细配置教程》SpringBoot默认会加载classpath下的logback-spring.xml(推荐)或logback.xml作为Logback的配置... 目录1. Logback 配置文件2. 基础配置示例3. 关键配置项说明Appender(日志输出器

linux lvm快照的正确mount挂载实现方式

《linuxlvm快照的正确mount挂载实现方式》:本文主要介绍linuxlvm快照的正确mount挂载实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux lvm快照的正确mount挂载1. 检查快照是否正确创建www.chinasem.cn2.