当前位置:   article > 正文

Java解压缩rar文件_com.github.junrar.exception.unsupportedrarv5except

com.github.junrar.exception.unsupportedrarv5exception

之前工作中遇到一个需求:rar 文件的压缩与解压缩。但是因为需求变动,还没来得及写,最近得空调研一下,发现 rar 比 zip 处理麻烦很多,这里小小记录一下。

rar是个专有格式,rar许可证不允许软件开发工具如JDK集成它,如果要在Java中解压rar文件,只能利用第三方工具依赖,如 junrar。官方地址为:GitHub - junrar/junrar: Plain Java unrar library

但是经过调研,发现压缩文件为 rar 还是很困难,没找到便捷可用的方法,这里仅记录 rar 文件解压的坑

 1. Maven 依赖

  1. <dependency>
  2. <groupId>com.github.junrar</groupId>
  3. <artifactId>junrar</artifactId>
  4. <version>7.5.5</version>
  5. </dependency>

2. 代码实现

  1. import com.github.junrar.Junrar;
  2. import com.github.junrar.exception.RarException;
  3. import java.io.File;
  4. import java.io.IOException;
  5. public class CompressTest {
  6. public static void main(String[] args) {
  7. rar();
  8. }
  9. private static void rar() {
  10. try {
  11. File rar = new File("D:/test/diff.rar");
  12. File destinationFolder = new File("D:/test/rar");
  13. Junrar.extract(rar, destinationFolder);
  14. } catch (IOException e) {
  15. throw new RuntimeException(e);
  16. } catch (RarException e) {
  17. throw new RuntimeException(e);
  18. }
  19. }
  20. }

3. 测试与问题

我使用 winrar 创建了一个压缩文件 diff.rar,然后运行代码,抛出以下错误:

  1. 17:16:52.273 [main] WARN com.github.junrar.Archive - Support for rar version 5 is not yet implemented!
  2. 17:16:52.276 [main] WARN com.github.junrar.Archive - exception in archive constructor maybe file is encrypted, corrupt or support not yet implemented
  3. com.github.junrar.exception.UnsupportedRarV5Exception: null
  4. at com.github.junrar.Archive.readHeaders(Archive.java:354)
  5. at com.github.junrar.Archive.setChannel(Archive.java:199)
  6. at com.github.junrar.Archive.setVolume(Archive.java:811)
  7. at com.github.junrar.Archive.<init>(Archive.java:149)
  8. at com.github.junrar.Archive.<init>(Archive.java:170)
  9. at com.github.junrar.Junrar.createArchiveOrThrowException(Junrar.java:121)
  10. at com.github.junrar.Junrar.extract(Junrar.java:40)
  11. at com.github.junrar.Junrar.extract(Junrar.java:32)
  12. at com.example.demo.test.CompressTest.rar(CompressTest.java:19)
  13. at com.example.demo.test.CompressTest.main(CompressTest.java:12)
  14. 17:16:52.276 [main] ERROR com.github.junrar.Junrar - Error while creating archive
  15. com.github.junrar.exception.UnsupportedRarV5Exception: null
  16. at com.github.junrar.Archive.readHeaders(Archive.java:354)
  17. at com.github.junrar.Archive.setChannel(Archive.java:199)
  18. at com.github.junrar.Archive.setVolume(Archive.java:811)
  19. at com.github.junrar.Archive.<init>(Archive.java:149)
  20. at com.github.junrar.Archive.<init>(Archive.java:170)
  21. at com.github.junrar.Junrar.createArchiveOrThrowException(Junrar.java:121)
  22. at com.github.junrar.Junrar.extract(Junrar.java:40)
  23. at com.github.junrar.Junrar.extract(Junrar.java:32)
  24. at com.example.demo.test.CompressTest.rar(CompressTest.java:19)
  25. at com.example.demo.test.CompressTest.main(CompressTest.java:12)
  26. Exception in thread "main" java.lang.RuntimeException: com.github.junrar.exception.UnsupportedRarV5Exception
  27. at com.example.demo.test.CompressTest.rar(CompressTest.java:23)
  28. at com.example.demo.test.CompressTest.main(CompressTest.java:12)
  29. Caused by: com.github.junrar.exception.UnsupportedRarV5Exception
  30. at com.github.junrar.Archive.readHeaders(Archive.java:354)
  31. at com.github.junrar.Archive.setChannel(Archive.java:199)
  32. at com.github.junrar.Archive.setVolume(Archive.java:811)
  33. at com.github.junrar.Archive.<init>(Archive.java:149)
  34. at com.github.junrar.Archive.<init>(Archive.java:170)
  35. at com.github.junrar.Junrar.createArchiveOrThrowException(Junrar.java:121)
  36. at com.github.junrar.Junrar.extract(Junrar.java:40)
  37. at com.github.junrar.Junrar.extract(Junrar.java:32)
  38. at com.example.demo.test.CompressTest.rar(CompressTest.java:19)
  39. ... 1 more
  40. Process finished with exit code 1

原因是 junrar 不支持 rar5,只要压缩时选择rar4就没问题

重新压缩文件为 rar4

运行代码,发现能正常解压文件了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/388148
推荐阅读
相关标签
  

闽ICP备14008679号