C# 实时监听文件夹以及文件夹内部的变化

主要是使用系统自带的System.IO.FileSystemWatcher这个类,废话不多说,直接上代码: 

    /// <summary>
    /// 文件监听
    /// </summary>
    public class FileFolderMonitor
    {
        private FileSystemWatcher fileSystemWatcher;

        /// <summary>
        /// 开启监听
        /// </summary>
        /// <param name="directoryPath">文件目录</param>
        public void StartMonitoring(string directoryPath)
        {
            fileSystemWatcher = new FileSystemWatcher();

            // 监听的目录路径
            fileSystemWatcher.Path = directoryPath;

            // 监听的事件类型(例如:修改、创建、删除)
            fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;

            // 添加事件处理event
            fileSystemWatcher.Changed += OnChanged;
            fileSystemWatcher.Created += OnChanged;
            //_fileWatcher.Deleted += OnChanged;
            //_fileWatcher.Renamed += OnRenamed;

            // 开启事件监听
            fileSystemWatcher.EnableRaisingEvents = true;

            LogHelper.Info($"已开始监听文件夹: {directoryPath}");
        }

        private void OnChanged(object source, FileSystemEventArgs e)
        {
            LogHelper.Info($"文件或文件夹发生变化: {e.FullPath},事件类型: {e.ChangeType}");
            Task task = new Task(() => {
                //todo...
            });
            task.Start();
        }

        private void OnRenamed(object source, RenamedEventArgs e)
        {
            LogHelper.Info($"相关资源被重命名: 重命名之前的绝对路径 {e.OldFullPath} 重命名之后的绝对路径 {e.FullPath}");
        }

        public void StopMonitoring()
        {
            if (fileSystemWatcher != null)
            {
                // 停止引发事件
                fileSystemWatcher.EnableRaisingEvents = false;

                // 清理资源
                fileSystemWatcher.Dispose();
                fileSystemWatcher = null;

                LogHelper.Info("已停止监听文件夹");
            }
        }
    }

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 18:00:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 18:00:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 18:00:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 18:00:04       20 阅读

热门阅读

  1. Go语言学习--Gin框架之Hello World

    2024-03-22 18:00:04       18 阅读
  2. 我的创作纪念日-第1024天

    2024-03-22 18:00:04       17 阅读
  3. oracle回收站管理

    2024-03-22 18:00:04       20 阅读
  4. Linux之看门狗

    2024-03-22 18:00:04       16 阅读
  5. Vuex 笔记

    2024-03-22 18:00:04       18 阅读