2013-08-01 4 views
1

Я нахожусь в центре проекта Java, часть которого вызывает Windows cmd для создания каталога. Мой код в настоящее время выглядит следующим образом:Разве cmd всегда открывает новое окно, когда вы md

Runtime rt = Runtime.getRuntime(); 
    String command; 
    command = "cmd.exe /c start mkdir \"C:\\Users\\User1\\Documents\\Folder1\\"+folderName+"\" &&exit"; 
    rt.exec(command); 

Это прекрасно работает (создает папку), но это порождает дополнительный экземпляр ЦМД. (Первоначально я добавил «& & выход», думая, что устранило бы дополнительное окно, но теперь я понимаю, что это ненужный код.)

1) Могу ли я предотвратить это дополнительный экземпляр ЦМД (который начинается в новом каталоге) , или

2) Могу ли я закрыть это дополнительное окно cmd, не вызывая других проблем? (Я слышал, что убийство cmd может сломать другие вещи на машине.)

+0

Вам не нужно запускать внешнюю команду для создания каталога. Используйте API. – EJP

ответ

1

Вы должны использовать:

File file = new File("C:\\Users\\User1\\Documents\\Folder1\\"+folderName+"\""); 

    if(!file.exists()) 
    { 
     file.mkdir(); 
    } 

вместо этого. Однако, если вы хотите вызвать команду в cmd, не создавая новую, вы не должны называть «cmd.exe/c start». Вы можете проверить, что если вы запустите ту же самую команду из внешнего java, она также запустит новый cmd. Попробуйте следующее:

Runtime rt = Runtime.getRuntime(); 
String command; 
command = "mkdir \"C:\\Users\\User1\\Documents\\Folder1\\"+folderName+"\" &&exit"; 
rt.exec(command); 
1

Почему бы вам не создать каталог с File?

new File("C:\\my\\path\\myDir").mkdir(); 
+1

Мы должны начать рекомендовать делать это NIO. 'Files.createDirectory (Path, FileAttributes)' –

Смежные вопросы