java Process,getInputStream,仅读取最新行

时间:2013-04-13 22:22:56

标签: java process bufferedreader

在下面的while循环中,我想只读取Process p输出中的最新一行,忽略在循环休眠时进入缓冲区的任何其他内容。我该怎么做?

String s;
Runtime r = Runtime.getRuntime();
Process p = r.exec("SomeContinuousProgram");
myInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

while (true){
  if ((s = myInput.readLine()) != null) {
    System.out.println(s);
  }
Thread.sleep(sleep);
}

2 个答案:

答案 0 :(得分:2)

您无法“跳过”到从该流程写入的最新行。你必须阅读它之前的所有行。

将程序拆分为2个线程。主线程将从BufferedReader读取,并将跟踪最新的行。另一个线程将休眠,然后显示最新的一行。

答案 1 :(得分:0)

while (true){
  if ((s = myInput.readLine()) != null) {
    System.out.println(s);
  }

这段代码没有任何意义。如果readLine()返回null,则它是流的结尾,唯一明智的做法是关闭流并退出读取循环。