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工作的主要内容,如果未能解决你的问题,请参考以下文章

windoes cmake与nmake

java 使用Java WatchService观察目录

WatchService 有时会触发 ENTRY_MODIFY 两次,有时会触发一次

使用 Java WatchService 监视文件夹中的文件夹

Java 7 WatchService 对其他人来说很慢吗?

手机root问题,请问这能不能对所有手机都有效? 1.先把adb所有的文件复制到C:\windo