簡體   English   中英

如何使用Java 7 WatchService省略對某些文件的檢測

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM