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();
}
}
}
上記の例では、ウォッチディレクトリのパスはコンソール引数から取得されています。 ディレクトリパスを静的に渡したいと思います。WatchServiceは、ファイル作成のためのspecficディレクトリを監視します。
試してみました。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)
'Paths.get( "O:\テスト") ; '私はそれがコンパイルされることを疑う - 「不法なエスケープ文字」。 –
\t \t Paths.get( "O:\\ test") – Sushant
'java -version'の出力は何ですか? –