我使用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();
答案 0 :(得分:-2)
正如Hoang指出的那样,只需添加:
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
会做你需要的。您可以通过添加来包含stderr
pb.redirectErrorStream(true);