Feb 11, 2009 - Windowsでファイル監視
今から約10年前に、ディレクトリの中にあるファイルの一覧に変更があったことを検出するために、 アプリのほうでファイル名と更新日付などのリストを保持するようなコードを書いたことがあったかなと思います。
Mac OS XではFSEventsというのがそういうサービスを提供しているようですが、 Windowsにも同様の機能が無いだろうかとPlatform SDKを探してみたら、 FindFirstChangeNotification や ReadDirectoryChangesW というAPIが Windows2000の頃からできてたんですね。 ここしばらくはファイル監視の必要が無かったので、全然知りませんでした。
.NET Frameworkでは FileSystemWatcher クラスがファイル監視に使えるということで、 今回これを使ってファイル監視処理を作り込みました。 特定のフォルダの一覧表示を更新する処理が簡単に実装できて便利ですね。 大量の変更が短時間に行われると、変更をため込むバッファがオーバーフローしてしまうということで、 その辺りの考慮が必要ですけど。
ん? MSDNライブラリを読んでいると、FileSystemWatcherクラスはWindows 98やMeでも使えるようになっているのですが、 FindFirstChangeNotification や ReadDirectoryChangesW とは異なる方法で実装されているのでしょうか。