2012-01-12 108 views
1
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(); 
      } 
     } 
    } 

在上例中,watch目录路径取自控制台参数。 我想静态传递目录路径。WatchService watch创建文件的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) 
+1

'Paths.get( “O:\测试”) ;“我怀疑会编译 - '非法转义字符'。 – 2012-01-12 05:31:17

+0

其\t \t Paths.get(“O:\\ test”) – Sushant 2012-01-12 06:37:47

+0

'java -version'的输出是什么? – 2012-01-12 07:27:45

回答

0

尝试

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

它不工作,上面提到异常抛出 – Sushant 2012-01-12 08:56:00

+0

你正在使用什么Java版本? Java.nio..package是Java 7的一部分,尝试检查你的版本maby你有一个较低版本的Java。 – CloudyMarble 2012-01-12 09:20:12

+0

我使用jdk 7 – Sushant 2012-01-12 09:29:08

0

我只是碰到了这个问题,我想你想要的是:

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