Как использовать команды mkdir и rmdir в программе Java - PullRequest
6 голосов
/ 22 апреля 2010

Я хочу использовать системные команды, такие как mkdir и rmdir при запуске Java-программы.

Как я могу это сделать?

Ответы [ 7 ]

14 голосов
/ 22 апреля 2010

Почему вы хотите использовать командную строку?К вашему сведению, существуют встроенные независимые от платформы File классы.

http://www.exampledepot.com/egs/java.io/deletefile.html
http://www.roseindia.net/java/beginners/java-create-directory.shtml

Создать каталог:

new File("dir path").mkdir();

Удалить каталог:

new File("dir path").delete(); 

'новый файл' здесь немного неправильный, фактически он не создает каталог или файл.Это создание ловушки ресурсов Java, которую вы можете использовать для запроса или работы с существующим ресурсом файловой системы или создания нового по вашему запросу.В противном случае используйте Runtime.getRuntime().exec("command line here") для использования операций командной строки (не рекомендуется !!).

Редактировать: решить проблему, с которой столкнулся плакат с вопросом:

String envp[] = new String[1];
envp[0] = "PATH=" + System.getProperty("java.library.path");
Runtime.getRuntime().exec("command line here", envp);

Обратите внимание на вставку envp в вызов метода exec(..), который в основном является переменной PATH из среды.

4 голосов
/ 22 апреля 2010

Как уже упоминалось, вы не должны делать это для простого управления файлами. Но чтобы это было упомянуто: Java API имеет класс с именем Runtime , который позволяет системные вызовы ... например:

Runtime.getRuntime().exec("some_command");
3 голосов
/ 09 октября 2011

Для справки людей, спотыкающихся в этом вопросе и задающихся вопросом, почему Runtime.getRuntime().exec("mkdir foo") не работает даже при включении среды согласно ответу Криса Деннетта, наиболее вероятная причина в том, что у вас нет программы под названием "mkdir" наваша система.Хотя большинство Unix-подобных систем имеют программу с таким именем, им совершенно не обязательно иметь такую, а в Windows ее нет, потому что в обоих случаях оболочка интерпретирует эту команду сама, а не передает еевнешняя программа.

Чтобы заставить ее работать, попробуйте ... exec ("cmd /c mkdir foo") для Windows семейства NT (или "command /c mkdir foo" для семейства Windows 95) или exec ("sh -c \"mkdir foo\"") для Unix.

Тот факт, что не существует независимого от платформы способа сделать это, является еще одной причиной, по которой предпочтение отдается Java API для выполнения задачи.

3 голосов
/ 22 апреля 2010

Лучшее не в том, а в поиске чистой Java API-функции, которая это делает.Это чище, проще для понимания и гораздо менее подвержено ошибкам.Это также единственный способ сделать Java, когда запись выполняется один раз и везде.Как только вы вызываете команды оболочки, вы привязываетесь к этой оболочке.

В вашем случае вы ищете класс java.io.File , в частности mkdir и удалить методы.

1 голос
/ 22 апреля 2010

Для этого есть методы в Java API и хорошо реализованные реализации в commons-io, которые еще больше упрощают процесс.

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

0 голосов
/ 26 октября 2017

метод makedirectory -

File dir = new File("path name");
boolean isCreated = dir.mkdir();

метод удаления -

public boolean delete()
true if and only if the file or directory is successfully deleted; false otherwise

Подробнее см. Ниже ссылки -

https://docs.oracle.com/javase/8/docs/api/java/io/File.html

http://www.flowerbrackets.com/create-directory-java-program/

0 голосов
/ 05 марта 2012

Привет Согласитесь с тем фактом, что я не был независимым от платформы, но только для тестирования приложения мне пришлось его использовать.Решение в моем случае для Runtime.getRuntime (). Exec ("my_command_name");из-за того, что я не работал, мне пришлось указать полный путь к файлу, в котором находился пакетный файл / sh /, т.е.1003 *

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