實時

2012-01-10 33 views
8

使用JDK 7我已經在看新的文件的創建,刪除和修改使用java.nio.file.StandardWatchEventKinds特定目錄成功檢測新創建的文件,即使Java的。*實時

我希望有人可能知道一種讓Java檢測新文件創建的方法,而不管它們的路徑如何。

我想這樣做,所以我可以計算每個新寫入的文件的MD5總和。

感謝您提供任何建議。

+0

定義「無論他們的路徑」?一個文件系統?任何可寫mount?另外,什麼操作系統? (簡短的回答是「否」,但可能會有一個警告,取決於操作系統) – 2012-01-10 00:12:21

+0

現在只是Windows 7/NTFS。我想監視所有安裝的卷。我正在測試JNotify作爲一種可能的解決方案。謝謝 – JonnyKash 2012-01-10 00:35:50

回答

0

好吧,簡短的回答是我不認爲Java可以做到這一點。您必須攔截對操作系統的調用,這需要更接近裸機,或者您可以按another answer中的建議執行操作,並將根監聽器註冊到每個文件夾的根目錄下,更不用說其他驅動器了windows機器。

第一種方法需要定製的JNI,它假定操作系統具有這樣的鉤子並允許用戶代碼訪問。

第二種方法可行,但可能會消耗大量內存來跟蹤所有偵聽器。在Windows中,右鍵單擊c:\,然後選擇並查看我們正在討論的文件夾的數量。

+0

謝謝。我發現[JNotify](http://jnotify.sourceforge.net/)庫完美適用於此。 – JonnyKash 2012-01-14 05:19:04

0

一種可能性 - 不是一個方便的可能性,而是一種可能性,就是遍歷目錄樹以查看要觀看的目錄,並在WatchService中註冊每個目錄。這不是一個非常好的方法,它可能是一個問題,取決於實際目錄樹的大小。

0

我不知道StandardWatchEvents(儘管聽起來很方便)。

您想要做的一種方法是使用本地窗口API,如ReadDirectoryChangesW(或卷更改)。這是痛苦的,但工程(在那裏,這樣做,希望我當時有另一種選擇)。