2012-03-08 65 views
0

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

下面是代码:

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(); 
    } 
} 

在上面的代码,我gettng事件大小为2

任何一个可以请帮我找出原因,我得到两个事件。

回答

0

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