2012-01-12 30 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);