簡介
偵測檔案變更對於各種應用程式(例如檔案)至關重要監控、備份系統和資料同步。雖然傳統的輪詢方法可能效率較低,但 Java 中提供了更優化的解決方案。
輪詢與基於事件的監控
輪詢涉及重複查詢檔案的 lastModified 屬性。然而,這種方法可能會佔用大量資源,尤其是在監視多個文件時。
Java 7 中的 NIO.2 WatchService API
Java 7 引入了 WatchService API,它提供基於事件的檔案變更偵測。這個API允許開發者註冊特定的檔案或目錄進行監控,當發生變化時它會通知應用程式。
這是一個示範WatchService用法的程式碼片段:
import java.nio.file.*; public class FileChangeListener { public static void main(String[] args) throws IOException { Path directory = Paths.get("/path/to/directory"); try (WatchService watcher = FileSystems.getDefault().newWatchService()) { directory.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY); boolean keepWatching = true; while (keepWatching) { WatchKey key = watcher.take(); for (WatchEvent<?> event : key.pollEvents()) { if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) { System.out.println("File modified: " + event.context()); } } if (!key.reset()) { keepWatching = false; } } } } }
這段程式碼為特定目錄設定監視服務並監聽變更。當文件被修改時,它會列印一條訊息。
基於事件的監視的優點
基於事件的文件更改監視與輪詢相比具有多個優點:
以上是Java的NIO.2 WatchService API如何增強檔案變更監控?的詳細內容。更多資訊請關注PHP中文網其他相關文章!