在使用 WatchService 时,我发现如果我删除正在监视的目录中的文件,它会触发一个事件,ENTRY_MODIFY
然后是一个ENTRY_DELETE
事件。
我意识到从技术上讲,文件可能会在删除之前被修改,但是删除文件会触发 ENTRY_MODIFY (大概没人关心)真的是预期的行为吗?
为了处理这个问题,我必须在触发传递 ENTRY_MODIFY 事件之前添加一个要检查的条件:
if (eventKind == ENTRY_CREATE) {
listener.fileCreated(file);
} else if (eventKind == ENTRY_MODIFY) {
if (Files.exists(fullPath, LinkOption.NOFOLLOW_LINKS)) {
listener.fileChanged(file);
}
} else if (eventKind == ENTRY_DELETE) {
listener.fileDeleted(file);
}
有没有更好的方法来处理这个问题(功能)?