0

我想rar.exe在Java中使用路径。这是在不使用库的情况下从我的 Java 应用程序中解压缩 rar 文件所必需的。

我想我会要求用户将 Winrar 的程序文件夹添加到PATH系统变量中。

我现在只需要知道如何获取rar.exe 文件的完整路径。

我现在得到的是:

//Split all paths
String[] paths = System.getenv("Path").split(";");
for(String value : paths)
{
    if(value.endsWith("Winrar"))
        System.out.println(value);
}

但是,我无法知道用户是否安装了 Winrar C:\Programfiles\Winrarstuff。有没有办法获取 的位置rar.exe,还是我必须手动扫描路径字符串中的每个文件夹以查找该位置?

4

2 回答 2

1

You can use where on Windows Server 2003+ which is roughly equivalent to which in *nix, however you can get similar behavior for other windows environments using the code found here: https://stackoverflow.com/a/304441/1427161

于 2013-11-16T15:09:22.020 回答
1

当路径rar.exe位于 PATH 环境变量中时,您可以简单地rar.exe从任何文件位置调用。这意味着您也可以通过Runtime.exec(...). 如果返回码不是 0,则无法启动进程,例如因为未安装 Winrar:

public static boolean checkRar() {
    Process proc = Runtime.getRuntime().exec("cmd /c rar.exe");
    try (BufferedReader reader =
            new BufferedReader(new InputStreamReader(proc.getInputStream()))) {
        String line;
        while ((line = reader.readLine()) != null) {
            // parse line e.g. to get version number
        }
    }
    return (proc.waitFor() == 0);
}
于 2013-11-16T15:19:23.060 回答