運行下面的程序:的ProcessBuilder - 掛在的readLine()方法
ProcessBuilder pb = new ProcessBuilder("powershell.exe", "-Command", "dir");
Process p = pb.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
System.out.println("Exit");
永遠不會到達 「退出」 的println - 只是無限地掛在readLine()
方法。我知道這是(最有可能)是由於PowerShell在最後一行中不輸出\n
而readLine
不確定是否已達到末端。有沒有辦法解決這個問題並正確地讀取輸入流? BTW。上的ProcessBuilder inheritIO
方法導致同樣的問題...
UPDATE
此:
ProcessBuilder pb = new ProcessBuilder("powershell.exe", "-Command", "dir");
pb.redirectErrorStream(true);
Process p = pb.start();
// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
// String line;
// while((line = bufferedReader.readLine()) != null){
// System.out.println(line);
// }
p.waitFor();
System.out.println("Exit");
還掛無限......
所以我需要在最後提供'exit'這樣的東西? – Bober02
我想你可以關閉標準輸出(來自PowerShell)。 –