Introduction
Detecting file changes is essential for various applications such as file monitoring, backup systems, and data synchronization. While traditional polling approaches can be inefficient, there are more optimal solutions available in Java.
Polling vs. Event-Based Monitoring
Polling involves repeatedly querying the file's lastModified property. However, this approach can be resource-intensive, especially when monitoring multiple files.
NIO.2 WatchService API in Java 7
Java 7 introduced the WatchService API, which provides event-based file change detection. This API allows developers to register specific files or directories for monitoring, and it will notify the application when changes occur.
Here's a code snippet demonstrating the usage of 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; } } } } }
This code sets up a watch service for a specific directory and listens for changes. When a file is modified, it prints a message.
Benefits of Event-Based Monitoring
Event-based file change monitoring offers several advantages over polling:
The above is the detailed content of How Can Java's NIO.2 WatchService API Enhance File Change Monitoring?. For more information, please follow other related articles on the PHP Chinese website!