Click here to Skip to main content
Full site     10M members (34.1K online)    

File Change Notification in Java 7

Sample Image

Introduction

File Change Notification is a new feature added in JDK 7. It is a part of the new file system API (NIO 2.0). It uses the WatchService API to receive file change notification events like creation, modification, and deletion of files or directories.

Background

Following are the steps required to monitor the notification events:

Using the code

Following is the complete java code:

import java.nio.*;
import java.io.*;
import java.nio.file.StandardWatchEventKinds.*;
import java.nio.file.*;

public class FileChangeNotifier
{
   public static void main(String args[]) throws IOException, InterruptedException
   {
      watchDir("E:\\MyFolder");		// Monitor changes to the files in E:\MyFolder
   }
   public static void watchDir(String dir) throws IOException, InterruptedException
   {
       WatchService service = FileSystems.getDefault().newWatchService();	// Create a WatchService
       Path path = Paths.get(dir);	// Get the directory to be monitored
       path.register(service,
            StandardWatchEventKinds.ENTRY_CREATE,
            StandardWatchEventKinds.ENTRY_MODIFY,
            StandardWatchEventKinds.ENTRY_DELETE);	// Register the directory
       while(true)
       {
          WatchKey key = service.take();	// retrieve the watchkey
          for (WatchEvent event : key.pollEvents())
          {
             System.out.println(event.kind() + ": "+ event.context());	// Display event and file name
          }
          boolean valid = key.reset();
          if (!valid)
          {
             break;	// Exit if directory is deleted
          }
       }
   }
}

Points of Interest

The File Change Notification feature provides a simple and elegant way of monitoring file notification events.

 
You must Sign In to use this message board.
Search 
Per page   
-- There are no messages in this forum --

Last Updated 12 Mar 2013 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2013