特定のフォルダーのすべてのファイル変更を検出したい (データ変更を除く)。System.IO.FileSystemWatcher を使用してそれを管理することにしました。
//
// fileSysWatchFile
//
this.fileSysWatchFile.EnableRaisingEvents = true;
this.fileSysWatchFile.IncludeSubdirectories = true;
this.fileSysWatchFile.NotifyFilter = System.IO.NotifyFilters.FileName;
this.fileSysWatchFile.SynchronizingObject = this;
this.fileSysWatchFile.Created += new System.IO.FileSystemEventHandler(this.fileSysWatchFile_Created);
this.fileSysWatchFile.Deleted += new System.IO.FileSystemEventHandler(this.fileSysWatchFile_Deleted);
this.fileSysWatchFile.Renamed += new System.IO.RenamedEventHandler(this.fileSysWatchFile_Renamed);
良い限り... 新しいファイルが検出されます。ファイルの削除が検出されます。ファイルの名前変更が検出されました。
ファイルをサブフォルダーに移動すると、最初にファイルの削除が検出され、次に新しいファイルの作成が検出されます。
パスを除いて、移動は名前の変更と同じであると思います。そうではないようです。保存方法でファイルの移動を検出できますか?
ところで...ファイルの変更のみを検出し、ディレクトリの変更は検出したくありません。
編集:
移動を検出する必要があり、削除、作成に耐えられない理由の追加情報:
他のドライブで同じ変更を再生したい。最初に削除を取得した場合は、シャドウ ファイルを削除します。次に、ファイル作成イベントを取得し、元のファイルはすでに失われています:-(.
したがって、監視対象のドライブであるドライブ A と、同じファイル名のファイルを含むドライブ B があります。
データの変更を除くすべてのファイルの変更は、ドライブ B で再生する必要があります。