我正在使用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。
有谁能帮我找出我参加两项活动的原因吗。
我猜文件夹中可能同时创建了一些临时文件。只需检查正在创建的文件的名称/路径。