Я пытаюсь использовать BufferedReader для чтения вывода процесса. Когда я пытаюсь
Process p=Runtime.getRuntime().exec("nslookup 10.123.30.130");
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
System.out.println(line);
line=reader.readLine();
}
выход
Server: <edited server details>
Address: <edited address details>
тогда как фактический вывод процесса в консоли:
Server: <details edited>
Address: <details edited>
Name: <details edited>
Address: <details edited>
(Примечание: я отредактировал фактический результат по соображениям безопасности)
Мое наблюдение заключается в том, что после прочтения первых двух строк возвращается null, и, следовательно, поток заканчивается. Есть ли способ получить все четыре строчки?
Обновление: третья пустая строка интерпретируется как пустая. Но если я попробую ту же программу для Process p=Runtime.getRuntime().exec("cmd /c dir");
, я получу результат точно так же, как в консоли, даже если есть новые строки.
ProcessBuilder
, который упрощает реализацию пункта (1) и .. 3) Предоставляет аргументы в виде массива. НАПРИМЕР."nslookup","10.123.30.130"
. - person Andrew Thompson   schedule 08.11.2012p.getErrorStream();
- person alaster   schedule 08.11.2012