订阅Java

时间:2018-02-05 15:38:06

标签: java windows winapi jna advapi32

我正在使用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毫秒可能超过必要,我想尽快执行操作)

0 个答案:

没有答案