24

これまでのところ、FileSystemWatcher はフォルダーを調べることができ、そのフォルダー内のファイルのいずれかが変更、変更などされた場合は、それを処理できることを知っています。しかし、私のシナリオでどのフィルターとイベントを使用すればよいかわかりません: フォルダーを監視し、そのフォルダーにファイルが追加された場合は XYZ を実行します... したがって、私のシナリオでは、既存のファイルが変更されても気にしません。など..それらは無視する必要があります...新しいファイルがそのフォルダーに追加された場合にのみXYZを実行します...

このシナリオでは、どのイベントとフィルターをお勧めしますか?

4

2 に答える 2

14

ウォッチャーをセットアップします。

FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "Blah";

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
    | NotifyFilters.FileName;

watcher.Created += new FileSystemEventHandler(OnChanged);

watcher.EnableRaisingEvents = true;

FileCreated次に、デリゲートを実装します。

private void OnChanged(object source, FileSystemEventArgs e) {
    Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
}
于 2012-06-17T15:13:23.317 に答える
2

FileSystemWatcher の詳細な説明については、こちらを参照してください: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx

追加されたファイルを探したい場合は、作成されたファイルを探す必要があります。

WatcherChangeType 列挙の値を設定して、監視する変更の種類を指定します。可能な値は次のとおりです。

  • すべて: ファイルまたはフォルダーの作成、削除、変更、または名前変更。
  • 変更済み: ファイルまたはフォルダーの変更。変更の種類には、サイズ、属性、セキュリティ設定、最終書き込み、および最終アクセス時刻の変更が含まれます。
  • 作成済み: ファイルまたはフォルダーの作成。
  • 削除済み: ファイルまたはフォルダーの削除。
  • 名前の変更: ファイルまたはフォルダーの名前を変更すること。

また、ファイルが作成 (追加) された場合に発生するイベント ハンドラーを接続するだけで、他のすべてのイベントを実装しないこともできます。

watcher.Created += new FileSystemEventHandler(OnChanged);
于 2012-06-17T15:10:21.380 に答える