java不支持解压rar5的解决办法--引用本地7zip.exe

由于rar5算法未开源,没有合适的JAVA依赖能够解决解压rar5。在运行中报错: javacom.github.junrar.exception.RarException: badRarArchive
通过引用本地7zip.exe,命令行执行解决:

 private static void unZipRar5File(String filePath, String unzipFilePath, String zipExePath) {
        try {
            Process process = Runtime.getRuntime().exec(zipExePath + " x " + filePath + " -o" + unzipFilePath);
            int exitCode = process.waitFor();
            if (exitCode == 0) {
                System.out.println("解压成功");
            } else {
                System.out.println("解压失败");
            }
        } catch (IOException | InterruptedException e) {
            System.out.println("rar文件解压异常");
            e.printStackTrace();
        }
    }

其中 filePath是待解压rar5文件的路径
unzipFilePath是想解压到的文件夹路径
zipExePath是本地7z.exe的路径 ,如: “C:\software\7-Zip\7z.exe”
文件路径注意转义符问题即可 。

欢迎讨论~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java语言可以使用Apache Commons Compress库来解压7-ZIP、ACE、ALZ、ZIP、RAR、TAR、ZIP、RAR格式压缩包。以下是一个示例代码: ```java 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.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream; import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import org.apache.commons.compress.compressors.xz.XZCompressorInputStream; import org.apache.commons.compress.compressors.z.ZCompressorInputStream; import org.apache.commons.compress.utils.IOUtils; import java.io.*; public class Uncompressor { public static void main(String[] args) throws IOException, ArchiveException { File input = new File("compressed_file_path"); File outputDir = new File("output_directory_path"); try (InputStream inputStream = new FileInputStream(input); ArchiveInputStream archiveInputStream = new ArchiveStreamFactory() .createArchiveInputStream(new BufferedInputStream(inputStream))) { ArchiveEntry entry; while ((entry = archiveInputStream.getNextEntry()) != null) { File outputFile = new File(outputDir, entry.getName()); if (entry.isDirectory()) { if (!outputFile.isDirectory() && !outputFile.mkdirs()) { throw new IOException("Failed to create directory " + outputFile); } } else { try (OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile))) { IOUtils.copy(archiveInputStream, outputStream); } } } } } } ``` 该示例代码可以处理多种压缩包格式,如ZIP、RAR、TAR、GZIP、BZIP2、XZ和Z。你可以根据自己的需要选择要解压的压缩包格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值