java調用控制檯命令出現阻塞的解決方法

執行一個有標準輸出的DOS可執行程序
在windows平臺上,運行被調用程序的DOS窗口在程序執行完畢後往往並不會自動關閉,從而導致Java應用程序阻塞在waitfor( )。導致該現象的一個可能的原因是,該可執行程序的標準輸出比較多,而運行窗口的標準輸出緩衝區不夠大。解決的辦法是,利用Java提供的Process 類提供的方法讓Java虛擬機截獲被調用程序的DOS運行窗口的標準輸出,在waitfor()命令之前讀出窗口的標準輸出緩衝區中的內容。一段典型的程序如下:
String ls_1;
Process process = Runtime.getRuntime().exec("cmd /c dir //windows");
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream());
while ( (ls_1=bufferedReader.readLine()) != null)
System.out.println(ls_1);
process.waitfor( );

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章