Java - 读取文件,而另一个进程更新它

时间:2012-10-03 08:09:13

标签: java file io

  

可能重复:
  How do I use Java to read from a file that is actively being written?

我有一个程序(陷阱接收器),它将一个字符串附加到文件的末尾。该程序基本上记录了它所做的一切。

我希望我的程序读取该日志文件。我可以面对这样做的问题以及最有效的方法。在另一个进程更新文件时读取文件。

1 个答案:

答案 0 :(得分:1)

假设这个记录器和大多数记录器一样,不只是附加任何类型的字符串而是整行。

您可以简单地使用bufferedReader并等待,如果您什么都没有:

BufferedReader br = new BufferedReader(new FileReader("path"));
String line;
while (true) {
    line = br.readLine();
    if (line != null) {
        // do something
    } else {
        Thread.sleep(DELAY);   // DELAY could be 100 (ms) for example     
    }
}

当然,如果您的应用程序还有其他任务要完成,您必须在单独的线程中执行此操作。

如果你想避免拉动,如果记录非常罕见,你可能会使用watch service,但我从来没有在一个简单的文件上试过它,我不确定它总是可靠的。