1 回答

TA貢獻1808條經驗 獲得超4個贊
您沒有讀取命令錯誤輸出,因此如果生成大量錯誤輸出,錯誤流緩沖區將滿載并阻止命令。
調用processBuilder21.redirectErrorStream(true)
以將命令錯誤輸出合并到標準輸出中。
其他變化:
您可以組合語句。
您需要關閉流,最好使用 try-with-resources。
您可能希望將循環內的語句更改
while
為 print?line
,而不是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();
添加回答
舉報