2010-08-02 56 views
8

我有一個文件夾,其中不斷有新文件正在轉儲。在Java中,檢測文件系統中的更改的最佳方法(即轉儲文件的指定文件夾)並將新到達的文件添加到隊列數據結構中,以便我可以順序處理每個傳入文件。Java檢測文件系統中的更改

我知道File類中的listFiles()函數,但是使用這個函數我只能得到在某個瞬間可用的文件。當然,我可以連續輪詢文件夾,並使用線程獲取文件列表。但這是最好的方法,還是有更好的方法來實現這一點。

+0

更通用的問題,即不需要特定的目錄:http://stackoverflow.com/questions/494869/file-changed-listener-in-java – 2015-04-08 14:20:31

回答

8

連續輪詢是做在Java中以現在的方式 - 雖然不輪詢過於頻繁,它可以是一個相當繁重的操作,如果目錄包含了許多條目。

JDK 7將有一個特定的API做只是這java.nio.file.WatchFile

+2

+1的WatchFile – 2010-08-02 12:28:41

+2

你可以鏈接到JavaDoc instaed一個愚蠢的谷歌搜索。 – Sylar 2010-08-02 13:32:33

+0

連續輪詢是一個壞主意。我建議使用JNotify,它可以進入文件系統通知。 – Arnelism 2011-10-20 12:24:05

4

不幸的是,在JDK7發佈之前還沒有標準的方法來做到這一點。 但是在互聯網上有一些庫可以使用不同操作系統的本地功能來執行此操作。

我已經看過這些庫 jPollerjNotify 但最後我簡單地結束投票時,我不得不這樣做,這是對我有意思的目錄。