Detect File Modification Event (Java 7)Tag(s): IO
Java 7 provides a mechanism to get notification on file change without polling (WatchService).
In this example, we set up a thread to watch CREATE event in a given folder. DELETE and MODIFY can also be watched.
import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardWatchEventKinds; import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio.file.WatchService; import java.util.List; public class WatchThread extends Thread { Path myDir; WatchService watcher; WatchThread(String path) { try { myDir = Paths.get(path); watcher = myDir.getFileSystem().newWatchService(); myDir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE); } catch (Exception e) { e.printStackTrace(); } } public void run() { while (true) { try { WatchKey watchKey = watcher.take(); List<WatchEvent<?>> events = watchKey.pollEvents(); for (WatchEvent<?> event : events) { // You can listen for these events too : // StandardWatchEventKinds.ENTRY_DELETE // StandardWatchEventKinds.ENTRY_MODIFY if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) { System.out.println("Created: " + event.context().toString()); } } watchKey.reset(); } catch (Exception e) { System.out.println("Error: " + e.toString()); } } } }
public class WatchDemo { public static void main (String args []) { new WatchThread("C:/temp").start(); System.out.println("WatchThread is running!"); } }
See also : this related howto and this one too.