C#を使ってフォルダ内のファイル監視をしよう

アプリケーションエンジニアの山田です。
今回もまたC#のちょっとしたものの紹介をしたいと思います。

・ファイルの監視
今回はファイル、フォルダの変更を監視するコンポーネントの紹介です。
使用するものは、「System.IO.FileSystemWatcher」というクラスです。

このコンポーネントを使うことによって指定したフォルダの中で、
ファイルやフォルダの作成、変更、削除などが行われるのを監視することが出来ます。

また、ファイルの種類や、ファイルの属性のどれが変わったか、等を細かく指定することが出来ます。

簡単な使用用途としては、
このフォルダーにファイルが作成されたら、データを処理して削除、削除されたら○○を行う等、これらをトリガーにして色々なことが出来そうです。

以下サンプルコード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//FileSystemWatcherクラスが含まれる名前空間
using System.IO;

namespace FileWatcher
{
public partial class FileWatcherForm : Form
{
public FileWatcherForm()
{
InitializeComponent();
}
FileSystemWatcher fsw = new FileSystemWatcher();
private void FileWatcher_Load(object sender, EventArgs e)
{
//監視対象のフォルダの設定
fsw.Path = @"c:\watch";
//監視する種類の設定
fsw.NotifyFilter =
(NotifyFilters.Attributes
| NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName);
//サブディレクトリも監視
fsw.IncludeSubdirectories = true;
//すべてのファイルを監視しているならば
fsw.Filter = "";
//WindowFormなどUI用
//コンソールではいらない
fsw.SynchronizingObject = this;
//イベント設定
fsw.Created += fsw_Created;
fsw.Changed += fsw_Changed;
fsw.Deleted += fsw_Deleted;
fsw.Renamed += fsw_Renamed;
//監視を開始
fsw.EnableRaisingEvents = true;
}

///
/// 名前の変更
///

/// /// void fsw_Renamed(object sender, RenamedEventArgs e)
{
Console.WriteLine("Renamed");
}

///
/// 削除
///

/// /// void fsw_Deleted(object sender, FileSystemEventArgs e)
{
Console.WriteLine("Deleted");
}

///
/// 変更
///

/// /// void fsw_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine("Changed");
}

///
/// 作成
///

/// /// void fsw_Created(object sender, FileSystemEventArgs e)
{
Console.WriteLine("Created");
}
}
}
よければ参考にしてください。
株式会社ライズウィル

株式会社ライズウィル

〒103-0013
東京都中央区日本橋人形町2-15-1
フジタ人形町ビル7F
TEL : 03-4590-3200
FAX : 03-4590-3201
E-Mail : info@risewill.co.jp
URL : https://www.risewill.co.jp