ファイルやディレクトリの監視を行う|C#
FileSystemWatcher
はディレクトリ内の変更を監視します。変更はイベントで通知されます。
下記サンプルではC:\test
ディレクトリに対して、directoryWatcher
でディレクトリの生成をfileWatcher
でJPGファイルの生成を監視しています。
using System.IO;
class Program {
static void Main(string[] args) {
FileSystemWatcher directoryWatcher = new FileSystemWatcher();
FileSystemWatcher fileWatcher = new FileSystemWatcher();
directoryWatcher.Path = @"C:\test";
directoryWatcher.NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.CreationTime;
directoryWatcher.Created += delegate (object sender, FileSystemEventArgs e) {
Console.WriteLine(e.FullPath);
};
fileWatcher.Path = @"C:\test";
fileWatcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.CreationTime;
fileWatcher.Filter = "*.jpg";
fileWatcher.Created += OnCreatedFile;
// 違う記述方法.
//fileWatcher.Created += new FileSystemEventHandler(OnCreatedFile);
directoryWatcher.EnableRaisingEvents = true;
fileWatcher.EnableRaisingEvents = true;
// 2分で監視を終える.
Thread.Sleep(120 * 1000);
directoryWatcher.EnableRaisingEvents = false;
fileWatcher.EnableRaisingEvents = false;
}
private static void OnCreatedFile(object sender, FileSystemEventArgs e) {
Console.WriteLine(e.FullPath);
}
}
ちなみに上記では、Created
イベントのサブスクライブを匿名メソッドとイベントハンドラーのアタッチ形式の2種類で記述しています。