Как я могу сделать getRuntime (). Exec со звездочкой? - PullRequest
4 голосов
/ 09 января 2010

Это не работает,

Runtime.getRuntime().exec("stat /*");

ни это;

Runtime.getRuntime().exec(new String[] {"stat", "/*"})

Есть ли способ обойти это?

Спасибо

Ответы [ 3 ]

8 голосов
/ 09 января 2010

Звездочка расширяется оболочкой (это называется globbing ). Таким образом, вы действительно хотите выполнить исполняемый файл /bin/sh (скорее всего - замените здесь другую оболочку, если требуется) и вызовите stat /* из этого. например выполнить:

/bin/sh -c "stat /*"

из вашего процесса Java. -c указывает, что / bin / sh выполняет все, что находится в строке после -c.

В качестве альтернативы вы можете выполнить расширение /* самостоятельно, найдя все файлы в корневом каталоге Java, а затем передать их как аргументы в stat.

1 голос
/ 09 января 2010

Вы можете делегировать задачу оболочке, как сказал Брайан Агнью, или использовать Java для вывода списка всех файлов и каталогов в / (например, через Apache IO ) и заменить /* на правильный список.

0 голосов
/ 11 января 2010

Эти ответы не сработали, поэтому я создал файл оболочки, в который я написал;

stat $1*

поэтому, когда мне нужно добавить звездочку, я вызываю этот файл без него,

Runtime.getRuntime().exec("/my_shell_file /miki/");

он добавляет звездочку для меня и возвращает мне нужный вывод, так как он работает:

stat /miki/*

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...