WatchService 可能存在不能再window工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WatchService 可能存在不能再window工作相关的知识,希望对你有一定的参考价值。
,java平台独立问题查看问题可解决方案:https://stackoverflow.com/questions/24306875/watchservice-in-windows-7-does-not-work
远程操作不支持可行解决方案:https://stackoverflow.com/questions/15688543/watchservice-take-does-not-wait-on-windows-7-x64-while-watching-changes-in-th
目录输入错误导致:
1 package chapter1_test; 2 3 import java.io.IOException; 4 import java.nio.file.FileSystems; 5 import java.nio.file.Path; 6 import java.nio.file.StandardWatchEventKinds; 7 import java.nio.file.WatchEvent; 8 import java.nio.file.WatchKey; 9 import java.nio.file.WatchService; 10 11 public class WatchFileService { 12 /** 13 * @param void 14 * @return void 15 */ 16 public static void checkDirChanged(String _dir) { 17 try { 18 //得到默认的WatchService服务 19 WatchService watcher=FileSystems.getDefault().newWatchService(); 20 Path dir=FileSystems.getDefault().getPath(_dir); 21 //为Path注册key,可选择的Kind<?> ENTAY_DELETE,ENTRY_CREATE,ENTRY_MODIFY 等 22 //将Path注册在变化检测名单中 23 WatchKey key=dir.register(watcher, java.nio.file.StandardWatchEventKinds.ENTRY_DELETE); 24 25 while(true) { 26 //一旦Watchkey到来,WatchEvent遍历 27 key=watcher.take(); 28 29 for(WatchEvent<?> event:key.pollEvents()) { 30 //一旦Kind<?>类型为ENTRY_MODIFY,打印Home dir change 31 if(event.kind()==StandardWatchEventKinds.ENTRY_DELETE) { 32 System.out.println("Home dir changed"); 33 } 34 } 35 key.reset(); 36 } 37 }catch(IOException e) { 38 39 }catch(InterruptedException e) { 40 System.out.println(e.getMessage()); 41 } 42 } 43 public static void main(String[] args) { 44 if(args.length<=0) { 45 System.err.println("命令行参数==0"); 46 System.exit(0); 47 } 48 //注意路径的输入,e.g:D:\\testFile,不到再加+"\\",在jvm中/自动转化成\ 49 WatchFileService.checkDirChanged(args[0]); 50 } 51 }
以上是关于WatchService 可能存在不能再window工作的主要内容,如果未能解决你的问题,请参考以下文章
WatchService 有时会触发 ENTRY_MODIFY 两次,有时会触发一次
使用 Java WatchService 监视文件夹中的文件夹