在Java 1.7中通过WatchService监视目录更改

时间:2013-11-27 21:50:13

标签: java directory listener watchservice

从Java 1.7开始,有一种方法可以在不添加其他库的情况下查看目录。在Oracle网站上有一些教程如何使用WatchService http://docs.oracle.com/javase/tutorial/essential/io/notification.html#try,但这对我来说是非常难以理解的。没有合适的例子如何使用它。

因此有人会告诉我如何添加监听器到目录并调用方法,例如:f()当文件被添加到目录时,让我们说:“。/ folder”?

1 个答案:

答案 0 :(得分:1)

每次在监视文件夹中创建文件时,都会调用此段代码:

    Path path = new File("./folder").toPath();
    WatchService watchService = FileSystems.getDefault().newWatchService();
    path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
    for (;;) {
        try {
        WatchKey key = watchService.take();
        for (WatchEvent<?> event : key.pollEvents()) {
            WatchEvent.Kind<?> kind = event.kind();
            if (kind.equals(StandardWatchEventKinds.ENTRY_CREATE)) {
                System.out.println("file created");
            }
        }
        } catch (InterruptedException x) {
             return;
        }
    }