public static void siteListener(String filePath) throws InterruptedException,IOException{
// 获取文件系统的WatchService对象
WatchService watchService = FileSystems.getDefault().newWatchService();
String parentPath = filePath.substring(0,filePath.lastIndexOf(File.separator));
Paths.get(parentPath).register(watchService, StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.ENTRY_MODIFY,StandardWatchEventKinds.ENTRY_DELETE);
System.out.println("------------------------------"+watchService.hashCode());
File file = new File(filePath);
LinkedList<File> fList = new LinkedList<File>();
fList.addLast(file);
while (fList.size() > 0 ) {
File f = fList.removeFirst();
if(f.listFiles() == null)
continue;
for(File file2 : f.listFiles()){
if (file2.isDirectory()){//下一级目录
fList.addLast(file2);
//依次注册子目录
Paths.get(file2.getAbsolutePath()).register(watchService
, StandardWatchEventKinds.ENTRY_CREATE
, StandardWatchEventKinds.ENTRY_MODIFY
, StandardWatchEventKinds.ENTRY_DELETE);
}
}
}
while(true)
{
System.out.println("siteListener开始监听");
// 获取下一个文件改动事件
WatchKey key = watchService.take();
System.out.println("key ======" + key);
for (WatchEvent<?> event : key.pollEvents())
{
System.out.println(event.context() +" --> " + event.kind());
if(event.context().toString().equals("dasda.txt")){
}
}
// 重设WatchKey
boolean valid = key.reset();
// 如果重设失败,退出监听
if (!valid)
{
break;
}
}
}