0

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();
                }   
            }
4

2 に答える 2

0

あなたはjpathwatchを見るべきです

ENTRY_RENAME_FROM\のようなイベントをサポートしますTO

于 2013-02-01T06:03:30.433 に答える
0

監視サービスに一時的にイベントを無視するように指示する方法はないと思います。コードでそれを行うことをお勧めします。

ただし、ここで行っているように見えるのは、新しいファイルを作成したことを監視サービスに通知させることで、ファイルのバックアップを作成することです。しかし、それはうまくいかないと思います。コードがイベントを取得するまでに、古いバージョンのファイルは新しいバージョンで既に上書きされている可能性があります。次に、move呼び出しにより、新しいファイルが「一時」の場所に移動されます。

新しいファイルを開くに、ファイルを作成して元のファイルのバックアップを作成するコードを取得することをお勧めします。コードはよりシンプルで信頼性が高く、移植性が高くなります。

于 2013-02-01T07:01:30.503 に答える