Я пытаюсь использовать cmd.exe для поиска файла в определенном каталоге, а затем отобразить путь в java-программе и записать его в файл. Проблема в том, что процесс никогда не заканчивается.Команда CMD.exe в java не заканчивается
Вот мой код:
String[] str = new String[] { "cmd.exe ", "cd c:\\",
" dir /b /s documents", "2>&1" };
Runtime rt = Runtime.getRuntime();
try{
Process p = rt.exec(str);
InputStream is =p.getInputStream();
InputStreamReader in = new InputStreamReader(is);
StringBuffer sb = new StringBuffer();
BufferedReader buff = new BufferedReader(in);
String line = buff.readLine();
while(line != null)
{
sb.append(line + "\n");
line = buff.readLine();
}
System.out.println(sb);
File f = new File("test.txt");
FileOutputStream fos = new FileOutputStream(f);
fos.write(sb.toString().getBytes());
fos.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
Я должен установить cmd/c вместо cmd.exe как команду в str? Если это так, я попробовал это и получил IOException. Система не может найти указанный файл. – chama
Вы должны поместить '/ c' в отдельный параметр. Runtime.exec ("cmd.exe", "/ c", ...) – tangens
cmd.exe с параметром/c, поэтому ваш код читает: 'String [] str = new String [] {" cmd.exe ", «/ c», «\» cd c: \\ && dir/b/s documents \ ""}; «Я не могу сказать, работает ли это, но это было бы тангенсом :) Обратите внимание, что несколько команд должен быть разделен символом '&&' и заключен в "". –