Java, проверьте, существует ли исполняемый файл в среде PATH

Я могу напечатать путь, используя System.getenv("PATH"). Затем я, возможно, пройду эти пути и использую File, чтобы проверить, существует ли файл.

Есть ли более быстрый способ в Java?

Ответ 1

Есть ли более быстрый способ в Java?

В плане производительности нет.

С точки зрения усилий по кодированию, вероятно, нет. Конечно, я не знаю какой-либо сторонней библиотеки Java, которая будет искать путь поиска команд, чтобы увидеть, существует ли исполняемый файл.

К сожалению, поиск исполняемого файла в Windows немного сложнее, потому что вам приходится учитывать различные типы исполняемых файлов... на основе суффиксов файлов. Даже в Linux/Unix вам необходимо использовать новые API-интерфейсы атрибутов Java 7, чтобы определить, установлен ли файл-кандидат с разрешениями на выполнение.

(Я знаю, что некоторые команды можно запускать безвредными способами, например, они могут поддерживать параметр/аргумент, который выводит строку версии или некоторую справочную информацию. Однако это работает только в определенных случаях. также известно, что в Unix/Linux есть встроенная команда оболочки под названием "whereis", которая может сказать вам, существует ли исполняемая команда с заданным именем в пути поиска.)

Ответ 2

Ваш подход будет работать.

Я предлагаю использовать метод File.listFiles(FileFilter filter) для каждого каталога в пути. Это упростит поиск в каждом каталоге.

Ответ 3

Вы можете использовать Runtime.getRuntime().exec("command"); в разделе try ... catch. Если приложение не будет в PATH, вы получите исключение.

[EDIT]

Но.. это будет выполнять приложение вместо проверки. К сожалению.