ファイルの変更をイベントで知る方法を探していたら、FileSystemWatcher というクラスを発見。
これを使えば、例えば C ドライブ内のファイルの作成・削除・変更を知る事ができそうです。次のように。
using System; using System.IO; namespace FileWatcherSample { class Program { static void Main(string[] args) { using (FileSystemWatcher watcher = new FileSystemWatcher()) { watcher.Path = @"C:\"; watcher.IncludeSubdirectories = true; watcher.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName; watcher.Filter = "*.*"; watcher.EnableRaisingEvents = true; watcher.Changed += (sender, e) => { Console.WriteLine("{0} が変更されました。", e.FullPath); }; watcher.Created += (sender, e) => { Console.WriteLine("{0} が作成されました。", e.FullPath); }; watcher.Deleted += (sender, e) => { Console.WriteLine("{0} が削除されました。", e.FullPath); }; watcher.Renamed += (sender, e) => { Console.WriteLine("{0} から {1} に変更されました。", e.OldFullPath, e.FullPath); }; Console.WriteLine("Enter で終了します。"); Console.ReadLine(); } } } }
ただ、「監視から除外するファイル」のフィルタを指定できないのがイマイチ。「特定の拡張子を除外する」といった使い方をしたいのに。