【31】C# FileSystemWatcher文件和文件夹监控

简介

FileSystemWatcher这个类用于当目录或目录中的文件发生更改时,侦听文件系统更改通知并引发事件。

使用场景

需要即时的知道文件的更改,获取第三方系统创建的文件等等。

代码示例

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace filewatcher
{
    class Program
    {
        static void Main(string[] args)
        {
            FileSystemWatcher fsw = new FileSystemWatcher();
            //获取应用程序的路劲,监听的文件夹路径
            fsw.Path= System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

            //获取或设置要监视的更改类型
            //LastAccess 最后读的日期
            //LastWrite 最后写的日期
            //FileName 文件名
            //DirectoryName 目录名
            //Attributes 文件或者文件夹属性
            //size 大小
            //Security 安全设置
            fsw.NotifyFilter= NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Attributes| NotifyFilters.Size|NotifyFilters.Security;

            //文件类型,支持通配符,“*.txt”只监视文本文件
            fsw.Filter = "";

            //设置是否级联监视指定路径中的子目录
            fsw.IncludeSubdirectories = true;

            //添加事件
            fsw.Changed += OnChanged;
            fsw.Created += OnCreated;
            fsw.Deleted += OnDeleted;
            fsw.Renamed += OnRenamed;

            // 开始监听
            fsw.EnableRaisingEvents = true;

            Console.WriteLine("按q退出!");
            while (Console.Read() != 'q') ;

            //FileSystemEventArgs
            //Name 受影响的文件名称
            //FullPath 受影响的文件或文件夹的完整路径
            //ChangeType 获取受影响的文件或目录的发生的事件类型
            void OnChanged(object source, FileSystemEventArgs e)
            {
                Console.Write(e.Name+"文件被改变……\r\n");
            }

            void OnCreated(object source, FileSystemEventArgs e)
            {
                Console.Write(e.Name+"文件被创建……\r\n");
            }

            void OnDeleted(object source, FileSystemEventArgs e)
            {
                Console.Write(e.Name+"文件被删除……\r\n");
            }

            //RenamedEventArgs
            //Name 获取受影响的文件或目录的新名称
            //OldName 获取受影响的文件或目录的旧名称
            //FullPath 获取受影响的文件或目录的完全限定的路径
            //OldFullPath 获取受影响的文件或目录的前一个完全限定的路径
            //ChangeType 获取受影响的文件或目录的发生的事件类型
            void OnRenamed(object source, RenamedEventArgs r)
            {
                Console.Write(r.OldName+"文件被重命名……"+ r.Name+"\r\n");
            }
        }
    }
}

效果预览

3956112-25ea475af9973e86.png
2019-04-25-230324.png

参考资料

https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?redirectedfrom=MSDN&view=netframework-4.8

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
FileSystemWatcher 是一个用于监视文件系统变化的类。它可以实时地监控指定目录中文件的创建、删除、更名和修改等操作,并触发相应的事件。因此,我们可以利用FileSystemWatcher 来实现文件的备份功能。 首先,我们需要创建一个 FileSystemWatcher 的实例,并设置它要监视的目录路径和需要监视的文件类型。例如,我们可以指定监视 "C:\Documents" 目录下的所有文本文件(txt): ```csharp FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = "C:\\Documents"; watcher.Filter = "*.txt"; ``` 然后,我们订阅 FileSystemWatcher 实例的 Created、Deleted、Renamed 和 Changed 等事件,对应文件的创建、删除、更名和修改操作。当有文件变化时,相应的事件处理程序将被触发。 ```csharp watcher.Created += new FileSystemEventHandler(OnFileCreated); watcher.Deleted += new FileSystemEventHandler(OnFileDeleted); watcher.Renamed += new RenamedEventHandler(OnFileRenamed); watcher.Changed += new FileSystemEventHandler(OnFileChanged); // 备份文件的方法 void BackupFile(string filePath) { // 实现文件备份的逻辑,可以是复制文件到指定的备份目录或使用压缩等方式备份 // ... } // 文件创建事件处理程序 void OnFileCreated(object sender, FileSystemEventArgs e) { BackupFile(e.FullPath); } // 文件删除事件处理程序 void OnFileDeleted(object sender, FileSystemEventArgs e) { // 如果需要,可以在文件删除时备份已删除的文件 BackupFile(e.FullPath); } // 文件更名事件处理程序 void OnFileRenamed(object sender, RenamedEventArgs e) { // 如果需要,可以在文件更名时备份已更名的文件 BackupFile(e.FullPath); } // 文件修改事件处理程序 void OnFileChanged(object sender, FileSystemEventArgs e) { // 如果需要,可以在文件修改时备份文件的旧版本 BackupFile(e.FullPath); } ``` 通过以上的代码,我们可以实现使用 FileSystemWatcher 监控指定目录下的文本文件,并在文件发生创建、删除、更名和修改操作时进行相应的备份操作。当然,根据实际需求,你可以根据不同的事件类型自定义备份操作,达到更灵活的备份功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值