Java IO Tutorial - Java Path.register(WatchService watcher, WatchEvent.Kind <?>... events)








Syntax

Path.register(WatchService watcher, WatchEvent.Kind <?>... events) has the following syntax.

WatchKey register(WatchService watcher,   WatchEvent.Kind <?>... events)   throws IOException

Example

In the following code shows how to use Path.register(WatchService watcher, WatchEvent.Kind <?>... events) method.

import java.io.IOException;
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;
//  ww w  .j av  a 2 s  . c om
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.