[英]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.