admin管理员组文章数量:1632159
Java递归解压缩Zip、7z、7zx、Rar5(使用winrar.exe)可解压这四种类型的嵌套压缩
- 依赖
-
- Zip
- 7z
- Rar
- 说明
- 代码(复制即可用)
依赖
Zip
官方自带,无需额外操作
7z
- commons-compress-1.20.jar:https://mvnrepository/artifact/org.apachemons/commons-compress/1.20
<!-- https://mvnrepository/artifact/org.apachemons/commons-compress -->
<dependency>
<groupId>org.apachemons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
- xz-1.9.jar:https://mvnrepository/artifact/org.tukaani/xz/1.9
<!-- https://mvnrepository/artifact/org.tukaani/xz -->
<dependency>
<groupId>org.tukaani</groupId>
<artifactId>xz</artifactId>
<version>1.9</version>
</dependency>
Rar
需要安装WinRAR软件,提供一个无广告版本(收集于网络,侵删):
链接:https://pan.baidu/s/17MaMZHO6WFB7diiyyBI5dg
提取码:yang
说明
- Zip解压代码来自Stack Overflow:How to unzip files recursively in Java?
- 7z解压由于后来测试解压2.4G的大文件需要10分钟,而调用WinRAR只需要1分多钟,因此弃用。实际上任何格式都可以调用WinRAR来解压
- Rar5解压目前只能通过这种命令行调用WinRAR的方式来解压,至少我搜遍CSDN和Stack Overflow都没找到,《java实现解压rar5》这个帖子是假的,《java解压rar5 兼容rar4》这个帖子只能解压TXT格式的文件,其他文件会损坏
- isZip()这个方法是通过文件头判断是否为Zip文件。如果文件本身是其他类型而手动改后缀名为.zip,解压会报错
- Rar解压的递归和Zip解压的递归原理不同,Rar是把文件解压出来,然后去递归文件夹,而Zip使用官方包,是直接把压缩包内容递归
代码(复制即可用)
import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZFile;
import java.io.*;
import java.nio.charset.Charset;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
/**
* 文件压缩工具类
*/
public class ZipUtil {
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis();
try {
// 测试
decompress("D:\\Download\\1.7z");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(String.format("耗时:%sms. ", System.currentTimeMillis() - start
版权声明:本文标题:Java递归解压缩Zip、7z、7zx、Rar5(使用winrar.exe)可解压这四种类型的嵌套压缩 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729115004a1187213.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论