Cod*_*Guy 5 java terminal runtime
对于某些终端命令,它们反复输出.例如,对于生成文件的内容,它可以输出完成的百分比.
我知道如何使用Java调用终端命令
Process p = Runtime.getRuntim().exec("command goes here");
Run Code Online (Sandbox Code Playgroud)
但这并没有给我一个当前命令输出的实时馈送.我怎么能这样做,以便我可以System.out.println()每100毫秒做一次,例如,看看过程的最新输出是什么.
你需要InputStream从过程中读取,这是一个例子:
编辑我修改了这里建议的代码以接收errStream与stdInput
ProcessBuilder builder = new ProcessBuilder("command goes here");
builder.redirectErrorStream(true);
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
Run Code Online (Sandbox Code Playgroud)
出于调试目的,您可以将输入作为字节读取,而不是readLine仅在进程不终止消息的情况下使用newLine