1
我正在嘗試使用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");
嘗試相同的程序,即使有新行,我也會得到與控制檯中完全一樣的輸出。
我以爲你想讀取輸出! ** p.getOutputStream ** –
也許中間的空行被解釋爲空? – mxns
1)閱讀[exec tag Wiki]鏈接的文章(http://stackoverflow.com/tags/runtime.exec/info)並執行所有建議。這可能會導致解決眼前的問題,但也.. 2)使用'ProcessBuilder',使它更容易實現點(1)和.. 3)提供參數作爲一個數組。例如。 ' 「NSLOOKUP」, 「10.123.30.130」'。 –