木子屋 Dnawo's BLOG

C#实现文件夹监视

👤 dnawo 📅 2009-02-27 👁 5001 👍 0 💬 0 🔄 来源:本站原创
//using System.IO;

/// <summary>
/// 开始监视
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
    //监视对象
    FileSystemWatcher watcher = new FileSystemWatcher(@"E:\test");

    //各事件处理程序
    watcher.Created += new FileSystemEventHandler(Watcher);
    watcher.Changed += new FileSystemEventHandler(Watcher);
    watcher.Deleted += new FileSystemEventHandler(Watcher);
    watcher.Renamed += new RenamedEventHandler(Renamed);

    //监视类型
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.DirectoryName;
    //监视子目录
    watcher.IncludeSubdirectories = true;
    //启动监视
    watcher.EnableRaisingEvents = true;
}

/// <summary>
/// 更新操作(创建、更新和删除)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Watcher(object sender, FileSystemEventArgs e)
{
    File.AppendAllText(@"E:\log.txt", string.Format("{0}:    {1},{2}\r\n", e.ChangeType, e.FullPath, e.Name));
}

/// <summary>
/// 重命名
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Renamed(object sender, RenamedEventArgs e)
{
    File.AppendAllText(@"E:\log.txt", string.Format("{0}:    {1},{2},{3},{4}\r\n", e.ChangeType, e.OldFullPath, e.FullPath, e.OldName, e.Name));
}

说明:测试过程中发现当复制一个文件到监视文件夹时会引发一次Created事件和多次的Changed事件!

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 7个顶级心理寓言 下一篇 → Discuz!NT 2.6的FTP类