java - 如果文件已重命名,如何跟踪?

标签 java file-io event-handling


我正在使用 BufferedReader 持续实时读取日志文件。这效果非常好。但是每天都会有一个Log-rotate,这意味着我的Logfile将被重命名并且不再改变。将在同一位置创建一个新的日志文件。在更改为新日志文件之前,我需要读完当前日志文件,使用 BufferedReader 没有问题,但如何发现文件名已更改?

我尝试调用 file.getPath()file.getAbsolutePath(),但这不起作用,因为 File-对象路径在创建后固定。

我还尝试使用 WatchService,但附加到文件也会导致 ENTRY_DELETE。检查它是否是重命名所产生的开销太大了。

有人知道如何判断日志文件是否已重命名吗?

最佳答案

您可以尝试JNotify 。完成这项工作,但不知道它需要多少资源。

关于java - 如果文件已重命名,如何跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22036962/

相关文章:

java - 简单但冗长的 Java PrintWriter 问题

javascript - 无法成功检测复选框上的单击或更改事件

java - 向上/向下滚动时检查复选框缺失

java - 扑克中如何重新分配边池?

php - 如何判断文件是否可从脚本写入?

java - 如何正确设置自定义事件

c# - 帮助解决错误 "' 对象'不包含 'Text' 的定义“

java - 写入并保存文件并打开它

java - 仅 ANTLR 匹配声明

java - 如何找到文件中的最大字节?