如何实时获取流程构建器输出文本日志

时间:2017-06-28 07:13:21

标签: java process stream console processbuilder

我使用ProcessBuilder执行一个需要一个小时才能执行的控制台应用程序。

我想实时查看控制台的输出。在我的代码中,结果仅在控制台应用程序完成时出现。

这是我的代码:

List<String> cmd;
ProcessBuilder pb = new ProcessBuilder();
pb.command(cmd);
Process process = pb.start();
process.getOutputStream().close();

InputStream processStdOutput = process.getInputStream();
Reader r = new InputStreamReader(processStdOutput);
BufferedReader br = new BufferedReader(r);
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line); // the output is here
}

int w = process.waitFor();

1 个答案:

答案 0 :(得分:-2)

正如Hoang指出的那样,只需添加:     pb.redirectOutput(ProcessBuilder.Redirect.INHERIT); 会做你需要的。您可以通过添加来包含stderr     pb.redirectErrorStream(true);