Как выполнитьКак выполнить команду rd в Java?
й/с/йс: \ папка
в Java?
Он отлично работает в командной строке.
Как выполнитьКак выполнить команду rd в Java?
й/с/йс: \ папка
в Java?
Он отлично работает в командной строке.
По dtsazza's answer:
Runtime.getRuntime().exec("cmd.exe /k rd /s /q c:\\folder");
Он отлично работает под WinXP SP3. Параметр /k
показывает, что будет следовать команда, которая должна быть выполнена из cmd.exe
.
Удачи вам в этом!
именно то, что я искал! –
Хотя, конечно, вам нужно удвоить обратную косую черту (папка c: \\) –
Проверьте метод Runtime.exec, который позволяет вам вызывать внешние процессы. (Имейте в виду, что вы теряете независимость от платформы, поскольку это будет полагаться на машину с установленной командой rd
и на пути.)
Лучшим вариантом может быть то же самое в чистой Java - эквивалент:
private void deleteDirectory(File directory)
{
for (File entity : directory.listFiles())
{
if (entity.isDirectory())
{
deleteDirectory(entity);
}
else
{
entity.delete();
}
}
directory.delete();
}
deleteDirectory(new File("C:\\folder"));
Добавление проверки при необходимости. :-)
rd отлично работает в командной строке, но не через функцию Runtime.exec(). –
Это потому, что 'rd' является встроенной командой в 'cmd.exe' – Alnitak
ок, но как я могу ее выполнить в java-идеях? –
Посмотрите на File.delete(String path)
метод, то есть:
new File("c:\\folder").delete();
Если (рекурсивный) удаление /s
важно, то (непроверенные):
public void deltree(File file) {
if (file.isDirectory()) {
for (File f : file.listFiles()) {
deltree(f);
}
}
file.delete();
}
public void deltree(String path) {
deltree(new File(path));
}
вызывается как:
deltree("c:\\folder");
это не удаляет папку, которая содержит файлов и/или папок. –
Наложение изменений - удалите комментарий. – Alnitak
File.delete() возвращает логический флаг, указывающий, было ли удаление успешным, а не бросать исключение IOException; если вы проверяете это? –
Вы можете удалить пустые каталоги в Java. Сначала вам нужно удалить файлы и подкаталоги.
public static boolean removeDirectoryRecursively(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = removeDirectoryRecursively(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
// The directory is now empty so delete it
return dir.delete();
}
File.listFiles() намного проще – Alnitak
Отъезд FileUtils в Apache Commons-IO; в частности, методы deleteDirectory и deleteQuietly, которые могут как рекурсивно удалять каталог.
Если вы хотите, чтобы выполнить его именно так, как вы указали, что вы можете сделать
Process p=Runtime.getRuntime().exec("cmd.exe /k rd /s /q c:\\folder");
В конце концов, «он отлично в командной строке». :) –
это не работает –
Приятно искать чистое решение для дельта-дерева Java, как предлагают некоторые сообщения! :) – helios