1

在下面的 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);
}
4

2 回答 2

2

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

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

于 2013-04-13T22:35:58.147 回答
0
while (true){
  if ((s = myInput.readLine()) != null) {
    System.out.println(s);
  }

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

于 2013-04-14T10:14:54.977 回答