我正在尝试查看对特定文件夹所做的所有修改。当我复制一个包含 2~5 个子文件夹的文件夹时,每个子文件夹有 2~3 个文件。一切都很好。
当我复制复杂的文件夹结构时会出现问题。例如,当我复制任何示例 Web 应用程序文件夹(仅用于测试目的)时,其中 WEB-INF 文件夹在 classes 文件夹中有大量源文件和子文件夹,在 lib 文件夹中有大量 jar 等等。
许多文件的“ENTRY_CREATE”和“ENTRY_MODIFY”的许多文件事件都被遗漏了。
NIO2 Watcher API 不可靠吗?
我使用 Oracle 网站中记录的以下代码段。
WatchKey watchKey = folderPathToMonitor.register(watchService,StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);
这就是我捕获事件的方式:代码正是这里的代码 - http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com /javase/tutorial/essential/io/examples/WatchDir.java
我复制了 30 个文件夹中的大约 500 个文件,理想情况下,必须通知 ENTRY_CREATE 和 ENTRY_MODIFY 以获取尽可能多的文件和文件夹。但是捕获的最大事件(ENTRY_CREATE 和 ENTRY_MODIFY 组合在一起)不会超过 280,而对于复制的 530 个文件和文件夹,仅应注册至少 530 个 ENTRY_CREATE 事件。
有什么我遗漏或必须添加到 oracle.com 的观看代码中的吗?对此的任何建议都将受到高度赞赏。