gpt4 book ai didi

java - 当复制大量文件时,JDK 7 Watchkey pollEvents 不捕获 ENTRY_CREATE 或 ENTRY_MODIFY

转载 作者:行者123 更新时间:2023-11-30 09:31:00 26 4
gpt4 key购买 nike

我正在尝试查看对特定文件夹所做的所有修改。当我复制一个包含 2~5 个子文件夹且每个子文件夹有 2~3 个文件的文件夹时。一切都很好。

当我复制复杂的文件夹结构时出现问题。例如,当我复制任何示例 Web 应用程序文件夹(仅用于测试目的)时,其中 WEB-INF 文件夹在类文件夹中有大量源文件和子文件夹,在 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 的监视代码中的吗?非常感谢有关此的任何建议。

最佳答案

好的。使用 jnotify 并解决了这个问题。非常简单。不得不编写一些代码来忽略同一操作的多个事件。但是让它工作了。在 - http://jnotify.sourceforge.net/ 获取 jnotify

关于java - 当复制大量文件时,JDK 7 Watchkey pollEvents 不捕获 ENTRY_CREATE 或 ENTRY_MODIFY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13051016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com