Получить расположение исполняемых файлов в 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);
}
Другие вопросы по тегам