在下面的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);
}
答案 0 :(得分:2)
您无法“跳过”到从该流程写入的最新行。你必须阅读它之前的所有行。
将程序拆分为2个线程。主线程将从BufferedReader
读取,并将跟踪最新的行。另一个线程将休眠,然后显示最新的一行。
答案 1 :(得分:0)
while (true){
if ((s = myInput.readLine()) != null) {
System.out.println(s);
}
这段代码没有任何意义。如果readLine()
返回null,则它是流的结尾,唯一明智的做法是关闭流并退出读取循环。