使用Java7 WatchService,我怎么能忽略对某些文件的检测呢

使用Java7 WatchService,我怎么能忽略对某些文件的检测呢,java,events,watchservice,Java,Events,Watchservice,我已成功地将创建、修改和删除事件注册到监视器,它们对我来说运行良好。对于我的问题,我想做一些文件修改,如'重命名'一旦创建事件被触发,所以修改事件将被触发,以及下一步,但我不希望它。这次我可以省略修改事件吗 if(event.kind().equals(StandardWatchEventKinds.ENTRY_CREATE)){ try{ if(!name.toString().startsWith("~")){

我已成功地将创建、修改和删除事件注册到监视器,它们对我来说运行良好。对于我的问题,我想做一些文件修改,如'重命名'一旦创建事件被触发,所以修改事件将被触发,以及下一步,但我不希望它。这次我可以省略修改事件吗

 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();
                }   
            }
你应该看看


它支持类似于
ENTRY\u RENAME\u从
\

的事件。我认为没有办法告诉手表服务暂时忽略事件。我建议您在代码中这样做

然而,您在这里所做的似乎是通过让watch服务通知您刚刚创建了一个新文件来创建一个文件备份。但我认为这行不通。当代码获取事件时,文件的旧版本可能已经被新版本覆盖。然后您的
move
调用会将新文件移动到“temp”位置


我建议您在打开新文件之前获取创建文件以备份原始文件的代码。您的代码将更简单、更可靠、更易于移植。

最后,我还必须制作一个元文件来存储每个文件的状态,并在事件被捕获时检查/忽略。敬请关注,但是否有任何关于Java 7 nio的建议?敬请关注。我真正想要的是,一旦新文件放到文件夹中,就会进行一些修改,并最终覆盖该文件。让我困惑的是,文件上的一系列事件会一个接一个地触发不同的事件,但我无法读取文件的状态,因为文件在事件弹出之前已被修改和保存。对不起,我不明白你在说什么。但是,如果您希望能够在修改发生之前获取文件的状态,则无法使用watch服务来完成此操作。watch服务在事件发生之后而不是发生之前报告事件。我不需要知道状态,但要在重命名Gain时忽略修改和删除事件,您不能。。。就像我在回答的第一行说的。您必须编写应用程序代码才能忽略事件。谢谢。我通过记录动作和验证检查来实现。但我仍然期待着如何提取原始文件的用户信息。不管怎样,你帮了我一个大忙,非常感谢。