C#实现文件夹监视

//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事件!

上一篇: 7个顶级心理寓言
下一篇: Discuz!NT 2.6的FTP类
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 4541
发表评论
登录后再发表评论!