java Process,getInputStream,仅读取最新行

标签 java process bufferedreader

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

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 个线程。主线程将从 BufferedReader 中读取数据并跟踪最新的行。另一个线程将 hibernate ,然后显示最新行。

关于java Process,getInputStream,仅读取最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993591/

相关文章:

java - java eclipse 中的 mp3

c# - 通过 C# 应用程序运行使用提示的 perl 脚本

java - 在 Java 中使用 BufferedReader 重置缓冲区?

Java客户端/服务器不通过Socket/ServerSocket进行通信

java - Spring Boot YML 和 StandAlone Tomcat 8 服务器

java - Eclipse 调试器中变量条目旁边的 id=xxx 是什么

python - 检查进程是否仅使用 Python 内置模块在 Windows 中运行

c - fork() 与 else

java - 将控制台输出写入 .txt 文件

java - 如何在 Java 中初始化 List<String> 对象?