0

我正在使用 jdk7 的 WatchService API 来监视文件系统上的文件夹。我正在通过电子邮件向该文件夹发送一个新文件,当文件进入该文件夹时,我会触发 ENTRY_CRATE 选项。它工作正常。但问题是它生成了两个 ENTRY_CREATE 事件,而不是我正在调用的一个事件。

以下是代码:

Path dir =  Paths.get(/var/mail);
WatchService watcher = dir.getFileSystem().newWatchService();       

dir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE);        
System.out.println("waiting for new file");
WatchKey watckKey = watcher.take(); 
List<WatchEvent<?>> events = watckKey.pollEvents();
System.out.println(events.size());              

for(WatchEvent<?> event : events){  
    if(event.kind() == StandardWatchEventKinds.ENTRY_CREATE){ 
        String fileCreated=event.context().toString().trim();
    }
}

在上面的代码中,我将事件大小设置为 2。

谁能帮我找出我得到两个事件的原因。

4

1 回答 1

0

我猜可能同时在文件夹中创建了一些临时文件。只需检查正在创建的文件的名称/路径是什么。

于 2012-06-24T14:58:48.943 回答