使用Java获取terminal命令的输出

时间:2013-02-16 21:28:41

标签: java terminal runtime

对于某些终端命令,它们会重复输出。例如,对于生成文件的内容,它可以输出完成的百分比。

我知道如何使用

在Java中调用终端命令
Process p = Runtime.getRuntim().exec("command goes here");

但是这并没有给我一个当前命令输出的实时馈送。我怎么能这样做,以便我可以每隔100毫秒做一次System.out.println(),例如,看看过程的最新输出是什么。

1 个答案:

答案 0 :(得分:5)

您需要从流程中阅读InputStream,这是一个示例:

修改我将代码修改为suggested here,以便通过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);
}

出于调试目的,您可以将输入读取为字节而不是使用readLine,以防进程未终止newLine

的消息