【C#】フォルダ / ファイル監視を実装するには... ~ FileSystemWatcher ~

■ フォルダ/ファイル監視を実装するには...

 * FileSystemWatcher を利用する

■ FileSystemWatcher

取得できるイベント

`#`イベント説明
01OnCreated作成
02OnDeleted削除
03OnRenamedリネーム
04OnChanged変更
05OnErrorエラー

■ サンプル

using System;
using System.IO;

namespace SampleDemo
{
  class Program
  {
    static void Main(string[] args)
    {
      FileSystemWatcher watcher = new FileSystemWatcher();

      watcher.Path = @"c:\temp";
      watcher.Filter = "*.txt";
      watcher.IncludeSubdirectories = true;
      watcher.NotifyFilter = NotifyFilters.FileName;
      watcher.Created += new FileSystemEventHandler(OnCreated);
      watcher.EnableRaisingEvents = true;

      Console.WriteLine("Start monitoring...");
      Console.Read();
    }

    private static void OnCreated(object source, FileSystemEventArgs fileSystemEvent)
    {
      Console.WriteLine("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");
      Console.WriteLine(fileSystemEvent.ChangeType.ToString());
      Console.WriteLine(fileSystemEvent.FullPath);
    }
  }
}

■ 問題点

http://d.hatena.ne.jp/eco31/20110116/1295112914
にも記載されているが
『ファイルやフォルダを操作したユーザが分からない』点。

補足

 * 「作成者=ファイル所有者」であれば、
    以下のサイトで書かれている『FileSecurityのGetOwner()で取得』できる
   => 削除した場合は、ファイルの自体がないし、「作成者=ファイル所有者」とは限らないし...
https://teratail.com/questions/59917