2012-03-08 63 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

我猜測可能有一些臨時文件在文件夾中同時創建。只需檢查正在創建的文件的名稱/路徑。