我有一個文件夾,其中不斷有新文件正在轉儲。在Java中,檢測文件系統中的更改的最佳方法(即轉儲文件的指定文件夾)並將新到達的文件添加到隊列數據結構中,以便我可以順序處理每個傳入文件。Java檢測文件系統中的更改
我知道File類中的listFiles()函數,但是使用這個函數我只能得到在某個瞬間可用的文件。當然,我可以連續輪詢文件夾,並使用線程獲取文件列表。但這是最好的方法,還是有更好的方法來實現這一點。
我有一個文件夾,其中不斷有新文件正在轉儲。在Java中,檢測文件系統中的更改的最佳方法(即轉儲文件的指定文件夾)並將新到達的文件添加到隊列數據結構中,以便我可以順序處理每個傳入文件。Java檢測文件系統中的更改
我知道File類中的listFiles()函數,但是使用這個函數我只能得到在某個瞬間可用的文件。當然,我可以連續輪詢文件夾,並使用線程獲取文件列表。但這是最好的方法,還是有更好的方法來實現這一點。
連續輪詢是做在Java中以現在的方式 - 雖然不輪詢過於頻繁,它可以是一個相當繁重的操作,如果目錄包含了許多條目。
JDK 7將有一個特定的API做只是這java.nio.file.WatchFile
你可以找Apache Commons JCI FAM(FileAlterationMonitor)
這裏有一個完整的例子:http://docs.oracle.com/javase/tutorial/essential/io/notification.html(解釋)
http://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java(源)
這適用於JRE 7,我在NetBeans 7.0下進行測試。
更通用的問題,即不需要特定的目錄:http://stackoverflow.com/questions/494869/file-changed-listener-in-java – 2015-04-08 14:20:31