我正在使用 java.nio.file.WatchService 监视文件夹的更改,以查看文件何时被修改。我还需要的是,当我收到 ENTRY_MODIFIED 事件时,查看谁修改了文件。为此,我正在尝试搜索 Windows 事件日志。因此,当我收到来自 WatchService 的事件时,我会使用 Advapi32Util.EventLogIterator 遍历 Windows 事件日志中的条目。
Advapi32Util.EventLogIterator iter = new Advapi32Util.EventLogIterator("Security");
while(iter.hasNext()) {
Advapi32Util.EventLogRecord record = iter.next();
}
从这个记录中我检索到我需要的信息。我的问题是,如果我恰好在从 WatchService 接收到事件的时间遍历事件日志,那么日志记录仍然不存在。如果我暂停 500 毫秒并在此之后遍历,那么它可以工作。因此,将日志条目写入事件日志需要一些时间。有没有办法订阅事件日志,以便在它已经更新并准备好遍历时收到通知,这样我就不会等待超过需要的时间?(有时 500 毫秒可能超出必要,我想尽快执行操作)