1 回答
TA贡献1808条经验 获得超4个赞
您没有读取命令错误输出,因此如果生成大量错误输出,错误流缓冲区将满载并阻止命令。
调用processBuilder21.redirectErrorStream(true)
以将命令错误输出合并到标准输出中。
其他变化:
您可以组合语句。
您需要关闭流,最好使用 try-with-resources。
您可能希望将循环内的语句更改
while
为 printline
,而不是cmd1
。
Process process = new ProcessBuilder("cmd.exe", "/c", cmd1)
.redirectErrorStream(true)
.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
for (String line; (line = reader.readLine()) != null; ) {
System.out.println(line);
}
}
int exitCode = process.waitFor();
当然,由于您只是打印输出,您也可以通过调用inheritIO().
int exitCode = new ProcessBuilder("cmd.exe", "/c", cmd1)
.inheritIO()
.start()
.waitFor();
添加回答
举报