2014-09-02 2 views
0

Как определить, является ли путь исполняемым в смысле запуска процесса в Java? Другими словами:Определение того, обозначает ли файл исполняемый процесс

new java.io.File("ls")  .canExecute(); // false (!) 
new java.io.File("/bin/ls").canExecute(); // true 

Как я могу работать вокруг провала первой линии, чтобы обнаружить, что «LS» может быть запущен как процесс (без того, чтобы выяснить его абсолютное положение)?

ответ

2

, если путь просто попытка поиска в PATH

+0

Так 'ява .lang.System.getenv.get ("PATH") '? Это то же самое, что способ «Runtime.exec» попытается решить простой путь? Это кросс-платформенный? –

+0

Да. Это то, что вы хотите. И это не перекрестная платформа. На другой платформе вы получаете строку с другим разделителем. Сепаратор - это 'File.pathSeparator' – talex

1

Вместо того, чтобы искать в PATH или с помощью File.canExecute(), вы могли бы начать Process и перехватывать исключения (не проверял, хотя)

Process process = new ProcessBuilder("ls").start(); 
Смежные вопросы