From 6a16552fd38a91076169466328763cf541027e31 Mon Sep 17 00:00:00 2001 From: Szymon Szukalski Date: Mon, 1 Oct 2012 13:35:00 +1000 Subject: initial commit --- src/main/java/io/skas/melbjvm/nio2/Watcher.java | 53 +++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/io/skas/melbjvm/nio2/Watcher.java (limited to 'src/main/java/io/skas/melbjvm/nio2/Watcher.java') diff --git a/src/main/java/io/skas/melbjvm/nio2/Watcher.java b/src/main/java/io/skas/melbjvm/nio2/Watcher.java new file mode 100644 index 0000000..2947ef7 --- /dev/null +++ b/src/main/java/io/skas/melbjvm/nio2/Watcher.java @@ -0,0 +1,53 @@ +package io.skas.melbjvm.nio2; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.file.*; + +public class Watcher { + + private static final Logger LOG = LoggerFactory.getLogger(Watcher.class); + + public void watchDirectory(Path watchedPath) throws IOException, InterruptedException { + + try (WatchService watchService = FileSystems.getDefault().newWatchService()) { + + final WatchKey key = watchedPath.register( + watchService, + StandardWatchEventKinds.ENTRY_CREATE, + StandardWatchEventKinds.ENTRY_MODIFY, + StandardWatchEventKinds.ENTRY_DELETE); + + while (true) { + + watchService.take(); + + for (WatchEvent watchEvent : key.pollEvents()) { + final WatchEvent.Kind kind = watchEvent.kind(); + + // handle OVERFLOW event + if (kind == StandardWatchEventKinds.OVERFLOW) { + continue; + } + + final WatchEvent watchEventPath = (WatchEvent) watchEvent; + Path newFile = watchedPath.resolve(watchEventPath.context()); + + if (kind == StandardWatchEventKinds.ENTRY_MODIFY) { + new FileReader(newFile); + } + } + + //reset the key + boolean valid = key.reset(); + + //exit loop if the key is not valid (if the directory was deleted, for example) + if (!valid) { + break; + } + } + } + } +} -- cgit v1.2.3