可能重复:
How do I use Java to read from a file that is actively being written?
我有一个程序(陷阱接收器),它将一个字符串附加到文件的末尾。该程序基本上记录了它所做的一切。
我希望我的程序读取该日志文件。我可以面对这样做的问题以及最有效的方法。在另一个进程更新文件时读取文件。
答案 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,但我从来没有在一个简单的文件上试过它,我不确定它总是可靠的。