0
我的代碼如下所示:Process.getInputStream()犯規返回所有行
public List<String> linux(String... commands) throws Exception{
Process p = null;
ProcessBuilder builder = new ProcessBuilder(commands);
p = builder.start();
BufferedReader reader= new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8));
String line;
List<String> lines = new ArrayList<>();
while((line = reader.readLine()) != null) lines.add(line);
return lines;
}
但它並沒有返回所有輸出。我在實際的遠程機器上嘗試過,大概有100多行,但我只有30行。我錯過了什麼嗎?
機會是您嘗試捕獲其輸出的進程將缺失的行寫入其錯誤流(請考慮閱讀'p.errorStream()') – fardjad
並且/或者您需要關閉進程的輸入流所以它不會等待你的任何事情。 – EJP