首页 > 解决方案 > 在 Java 中打开受密码保护的 RAR 文件

问题描述

我已经在 Google 上搜索了一段时间,但似乎找不到任何允许我使用 Java(压缩文件)打开受密码保护的 RAR 文件的库。

如果有人知道,请与我分享(如果可能的话,包括 maven 依赖项)。

我一直在研究 JUnRar 和 java-UnRar,但据我所知,它们都不支持受密码保护的文件。

标签: java

解决方案


WinRAR 附带两个实用程序(unrar.exe 和 rar.exe)。在 Powershell 中,您可以通过调用以下命令来解压缩存档:unrar e .\my-archive.rar -p[your-password]

exec()现在,您可以使用Java 的 Runtime 类的方法进行此调用:

public class UnArchiver {

    public static void main(String[] args) {        
        try {   
            String command = "unrar.exe e .\my-archive.rar -pQWERT";
            Runtime.getRuntime().exec(command); 
        } catch (Exception e) {
            e.printStackTrace();
        }   
    }
}
// Code not tested

但是,此选项有一些缺点:

  • 密码作为字符串处理(处理密码时的坏习惯)

  • 我不知道如何exec()为 Windows JVM 实现。我认为密码最终存在不属于它的不安全位置(日志文件?)的风险。

  • 对我来说,exec()它总是有味道(因为它引入了与环境的耦合 - 在这种情况下unrar.exe,乍一看对于你的代码的后续维护者来说是不可见的)

  • unrar.exe您引入了只能在 Windows 上运行的平台依赖项(在本例中为 Windows) (感谢@SapuSeven)

注意:在 Stackoverflow.com 上搜索时,您可能偶然发现了Junrar库。它不能用于提取加密档案(参见此文件的第 122 行)。


推荐阅读