Java IO Tutorial - Java FileSystem.newWatchService()








Syntax

FileSystem.newWatchService() has the following syntax.

public abstract WatchService newWatchService()     throws IOException

Example

In the following code shows how to use FileSystem.newWatchService() method.

/*w  ww.  j  av a2 s  . co  m*/
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
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;

public class Main {

  public static void main(String[] args) throws Exception {

    FileSystem fileSystem = FileSystems.getDefault();
    WatchService watchService = fileSystem.newWatchService();
    Path directory = Paths.get("c:/");
    WatchEvent.Kind<?>[] events = { StandardWatchEventKinds.ENTRY_CREATE,
        StandardWatchEventKinds.ENTRY_DELETE,
        StandardWatchEventKinds.ENTRY_MODIFY };
    directory.register(watchService, events);
    while (true) {
      System.out.println("Waiting for a watch event");
      WatchKey watchKey = watchService.take();

      System.out.println("Path being watched: " + watchKey.watchable());
      System.out.println();

      if (watchKey.isValid()) {
        for (WatchEvent<?> event : watchKey.pollEvents()) {
          System.out.println("Kind: " + event.kind());
          System.out.println("Context: " + event.context());
          System.out.println("Count: " + event.count());
          System.out.println();
        }

        boolean valid = watchKey.reset();
        if (!valid) {
          // The watchKey is not longer registered
        }
      }
    }

  }
}

The code above generates the following result.