Получить расположение исполняемых файлов в PATH
Я хотел бы использовать rar.exe
путь в Java. Это необходимо для распаковки rar-файлов из моего Java-приложения без использования библиотеки.
Я решил потребовать, чтобы пользователь добавил папку программных файлов для Winrar в PATH
системная переменная.
Все, что мне нужно знать сейчас, это как получить полный путь к rar.ex
электронный файл.
Теперь у меня есть вот что:
//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 ответа
Ты можешь использовать where
на Windows Server 2003+, что примерно эквивалентно which
в *nix, однако, вы можете получить аналогичное поведение для других сред Windows, используя код, найденный здесь: /questions/6523475/est-li-ekvivalent-kotoryij-v-komandnoj-stroke-windows/6523492#6523492
Когда путь к 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);
}