获取PATH中可执行文件的位置

时间:2013-11-16 15:05:21

标签: java windows system-paths

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

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

现在我需要知道的是如何获得rar.ex e文件的完整路径。

我现在得到的是:

//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的位置,还是我必须手动扫描位置的路径字符串中的每个文件夹?

2 个答案:

答案 0 :(得分:1)

您可以在Windows Server 2003+上使用where,它大致相当于* nix中的which,但是您可以使用此处的代码获得与其他Windows环境类似的行为:{{3} }

答案 1 :(得分: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);
}