监视服务监视用于创建文件的特定目录


public static void main (String args[]) throws Exception {
        Path _directotyToWatch = Paths.get(args[0]);
        WatchService watcherSvc = FileSystems.getDefault().newWatchService();
        WatchKey watchKey = _directotyToWatch.register(watcherSvc, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
        while (true) {
            watchKey=watcherSvc.take();
            for (WatchEvent<?> event: watchKey.pollEvents()) {
                WatchEvent<Path> watchEvent = castEvent(event);
                System.out.println(event.kind().name().toString() + " " + _directotyToWatch.resolve(watchEvent.context()));
                watchKey.reset();
            }
        }
    }

在上面的示例中,监视目录路径取自控制台参数。我想静态传递目录路径。

尝试了这个 Paths.get("O:\\test"(; 但抛出异常

Exception in thread "main" java.lang.NoClassDefFoundError: java/nio/file/Paths
    at JSR203_NIO2_WatchFolder.main(JSR203_NIO2_WatchFolder.java:40)
Caused by: java.lang.ClassNotFoundException: java.nio.file.Paths
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

试试

Path _directotyToWatch = Paths.get("O:/test"); 

我刚刚遇到了这个问题,我认为你想要的是:

Path path = FileSystems.getDefault().getPath(path_string);

最新更新