在Java中拖尾/轮询日志文件的最有效方法

Nig*_*olf 4 java performance file-io file polling

有许多方法,可以使用创建程序并只调用Unix tail命令,但问题是该进程必须安装在安装了尾部的Unix机器上.

另一个选择是直接读取文件,直到没有更多行,睡眠一段时间然后尝试读取下一行并重复.

问题是我如何/如何轮询正在被写入的文件.AFAIK在Java中没有办法在文件被修改时获得异步通知,因为这个级别太低(来自操作系统的东西).我也知道没有lib支持这个.

我在想一个更好的方法可能是在文件的修改日期进行睡眠/轮询..?

有解决方案吗

Cra*_*lus 5

如果您可以使用Java 7,则可以使用File Watchers,您可以实现所需的功能.
文件通知

对于Java 6(和之前的版本),您必须使用Apache Commons VFS(文件监视器) lib来创建自己的文件监视器.

如果您不能使用Java 7或使用第三方库(例如,commons或jnotify),则必须使用轮询线程编写一个监视程序.