[英]How could I omit detection for some files with Java 7 WatchService
我已经成功将CREATE,MODIFY和DELETE事件注册到监视器,并且它们对我来说很好用。 对于我的问题,我想在触发CREATE事件后进行一些文件修改,例如“重命名”,因此接下来也会触发MODIFY事件,但是我不希望这样做。 我这次可以省略MODIFY事件吗?
if(event.kind().equals(StandardWatchEventKinds.ENTRY_CREATE)){
try{
if(!name.toString().startsWith("~")){
Path tempPath = Paths.get(path+"/~temp_"+name.getFileName());
Path oldPath = Paths.get(path+"/"+name.getFileName());
Files.move(oldPath, tempPath, StandardCopyOption.REPLACE_EXISTING);
PDFStamp.stampPDF(tempPath.toString(), oldPath.toString());
omitPath.put(name, name);
Files.delete(tempPath);
}
}catch(Exception e){
e.printStackTrace();
}
}
你应该看看jpathwatch
它支持ENTRY_RENAME_FROM
\\ TO
事件
我认为没有办法告诉监视服务暂时忽略事件。 我建议您在代码中执行此操作。
但是,您在这里似乎要执行的操作是通过让watch服务注意到您刚刚创建了新文件来创建文件的备份。 但我认为这行不通。 在您的代码获取事件时,该文件的旧版本可能已经被新版本覆盖。 然后,您的move
调用会将新文件移动到“临时”位置。
我建议您在打开新文件之前获得创建文件的代码,以对原始文件进行备份。 您的代码将更简单,更可靠并且更易于移植。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.