运行下面的程序:的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)。 –