2010-07-08 32 views
3

我正在使用JDK 7的WatchService來監視目錄。如何從使用JDK 7刪除目錄中告知文件刪除?

ENTRY_DELETE事件告訴我一個條目已被刪除。我可以得到這個條目的名稱做類似於:

WatchEvent<Path> ev = cast(event); 
Path name = ev.context(); 
Path child = dir.resolve(name); 

我想知道如果刪除的條目是一個文件或文件夾。當然,我試過child.isDirectory(),但那當然不起作用,因爲元素不再存在。

有沒有什麼辦法,沒有啓發式,告訴如果刪除的元素是一個文件或目錄?

回答

1

不幸的是,由於WatchService建立在本機操作系統的文件事件服務之上,它受到本地服務提供的信息的限制。 Linux的inotify確實指出刪除了哪種類型的文件系統對象,但微軟的FileSystemWatcher只是給出了名稱。

+0

是的,我發現這可能只是它得到的,但我想也許它會在啓動時掃描目錄結構或類似的東西,從而在發生事件時從文件夾告知文件。 我看到你給的參考是一個.net FileSystemWatcher,但我使用的是Java。就我所知,這個.net watcher具有「重命名」事件,但是據JDK 7的NIO2.0 WatchService不支持。 您的答案與.net相關嗎? 如果無法通過文件夾刪除來告訴文件,我只需要像兩​​個人一樣行事 - 而且我的一個操作會失敗,我會忽略它。 – shwartz 2010-07-09 11:46:44