これまでのところ、FileSystemWatcherはフォルダーを調べることができ、そのフォルダー内のファイルのいずれかが変更、変更、.etc ...された場合、それを処理できることを知っています。しかし、シナリオで使用するフィルターとイベントがわかりません。フォルダーを監視します。ファイルがそのフォルダーに追加されている場合は、XYZを実行します...したがって、私のシナリオでは、既存のファイルが変更されてもかまいません。 、etc ..これらは無視する必要があります...新しいファイルがそのフォルダに追加された場合にのみXYZを実行します...
このシナリオでは、どのイベントとフィルターをお勧めしますか?
ウォッチャーを設定します。
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);
}
FileSystemWatcherの詳細な説明については、こちらをご覧ください: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx
追加されたファイルを探す場合は、作成されたファイルを探す必要があります。
WatcherChangeType列挙体の値を設定することにより、監視する変更のタイプを指定します。可能な値は次のとおりです。
また、ファイルが作成(追加)された場合に起動するイベントハンドラーを接続するだけで、他のすべてのイベントは興味がないため実装しない場合があります。
watcher.Created += new FileSystemEventHandler(OnChanged);
以下のコメント付きのコードは、うまくいけばあなたのニーズを満たすかもしれません。
public void CallingMethod() {
using(FileSystemWatcher watcher = new FileSystemWatcher()) {
//It may be application folder or fully qualified folder location
watcher.Path = "Folder_Name";
// Watch for changes in LastAccess and LastWrite times, and
// the renaming of files or directories.
watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
// Only watch text files.if you want to track other types then mentioned here
watcher.Filter = "*.txt";
// Add event handlers.for monitoring newly added files
watcher.Created += OnChanged;
// Begin watching.
watcher.EnableRaisingEvents = true;
}
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e) {
// Specify what is done when a file is created with these properties below
// e.FullPath , e.ChangeType
}