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