我有一个程序监视日志文件的更改。该程序使用FileInputStream来继续读取文件。同时,日志文件可能会被轮换:重命名旧日志文件,并将新日志条目写入新文件。
我的程序如何确定文件是否已重命名,以便切换到读取新的日志文件?
答案 0 :(得分:5)
根据this question, JNotify sseems是您问题的完美解决方案:
JNotify是一个java库,允许java应用程序监听文件系统事件,例如:
创建了文件
文件已修改
重命名文件
文件已删除
答案 1 :(得分:0)
也许您可以watch文件系统并根据您的需要进行更改。
答案 2 :(得分:0)
我能想到的最简单的方法就是每5秒轮询一次文件大小或类似的东西。
如果您正在读取的文件已重命名并且创建了新文件,则您的轮询将显示大小突然减小。然后,您可以相应地重新创建FileinputStream。