今回もまた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");
}
}
}
よければ参考にしてください。