Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Watching a Directory and sub directory for create, modify and Changes in java

Tags:

java

I have make some code for detect changed in directory C:/java/newfolder it working good. i have given below.

import java.nio.file.*;
import java.util.List;

public class DirectoryWatchExample {
public static void testForDirectoryChange(Path myDir){

        try {
           WatchService watcher = myDir.getFileSystem().newWatchService();
           myDir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE,
           StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);

           WatchKey watckKey = watcher.take();

           List<WatchEvent<?>> events = watckKey.pollEvents();
           for (WatchEvent event : events) {
                if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
                    System.out.println("Created: " + event.context().toString());
                }
                if (event.kind() == StandardWatchEventKinds.ENTRY_DELETE) {
                    System.out.println("Delete: " + event.context().toString());
                }
                if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
                    System.out.println("Modify: " + event.context().toString());
                }
            }

        } catch (Exception e) {
            System.out.println("Error: " + e.toString());
        }
}

public static void main (String[] args) {
    Path myDir = Paths.get("c:/java/newfolder/");
    //define a folder root
    testForDirectoryChange(myDir);

}
} 

now i watching only the directory. But i need to watch only the all sub directory.

for ex : c:/java/newfolder/folder1, c:/java/newfolder/folder2, c:/java/newfolder/folder3......etc

i given examples above sub directory

c:/java/newfolder/*..

i need to watch the all sub directory give me some solutions ?

like image 793
prasanth Avatar asked Dec 21 '22 02:12

prasanth


1 Answers

What you want to do is register the WatchService recursively and continue to register it upon subsequent ENTRY_CREATE events. A complete example is provided by Oracle here: http://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java

Normally I wouldn't place a post with a single link, however I doubt Oracle will be taking down a fairly basic tutorial and the answer is far too verbose. Just in case though, examples are easily found by searching for "java watchservice recursive".

like image 185
Tim Bender Avatar answered Apr 27 '23 07:04

Tim Bender