C#中FileSystemWatcher的使用教程

 更新时间:2020年12月18日 09:17:09   作者:码农读书  
这篇文章主要给大家介绍了关于C#中FileSystemWatcher使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

开局一张图,在 System.IO 下的 FileSystemWatcher 常用于监视文件系统的变更,当文件系统中的文件或者文件夹被修改会自动触发相应的回调事件。

为了能够了解 FileSystemWatcher 是怎么运作的,你可以指定一个被监视的文件夹,当被监视的文件夹修改后,大概会触发如下的一些事件。

  • Changed: 当文件或者文件夹已经完成修改时触发此事件
  • Created:当文件或者文件夹已经成功创建触发此事件
  • Deleted:当文件或者文件夹已经成功删除触发此事件
  • Error:当变更的过程中发生错误触发此事件。
  • Renamed:当文件或者文件夹已经成功被重命名时触发此事件

创建一个简单的 file 监视

接下来我们在 Visual Studio 中创建一个 Console 程序,用来了解如何进行文件监视,不过建议把 Console 部署成 Windows Service,这样方便在系统中常驻监控,一旦被监视的路径发生变更就会自动发出通知事件。

该说的都说了,接下来一起研究代码吧。

    static void Main(string[] args)
    {
      string path = @"D:\IDG";

      MonitorDirectory(path);

      Console.ReadKey();
    }

下面的代码片段展示了 MonitorDirectory 方法的内部逻辑,这个方法可用于监视指定的文件夹并且当文件夹变更时触发事件,可以看到文件夹路径是通过参数传进去的。

    private static void MonitorDirectory(string path)
    {
      FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();

      fileSystemWatcher.Path = path;

      fileSystemWatcher.Created += FileSystemWatcher_Created;
      fileSystemWatcher.Renamed += FileSystemWatcher_Renamed;

      fileSystemWatcher.Deleted += FileSystemWatcher_Deleted;

      fileSystemWatcher.EnableRaisingEvents = true;
    }

可以着重了解一下上面的 event 是如何被灌入的,而且我还写了一句 fileSystemWatcher.EnableRaisingEvents = true, 这是什么意思呢?表示当前的路径正式开始被监控,一旦监控的路径出现变更,FileSystemWatcher 中的指定事件将会被触发。

扫一下上面定义的各个 event 事件,分别都定义了该事件的处理函数,比如说:FileSystemWatcher_Created,FileSystemWatcher_Renamed,FileSystemWatcher_Deleted ,显而易见触发某一个事件就会触发它的事件处理函数,对吧,具体代码如下:

    private static void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
    {
      Console.WriteLine("File created: {0}", e.Name);
    }

    private static void FileSystemWatcher_Renamed(object sender, FileSystemEventArgs e)
    {
      Console.WriteLine("File renamed: {0}", e.Name);
    }

    private static void FileSystemWatcher_Deleted(object sender, FileSystemEventArgs e)
    {
      Console.WriteLine("File deleted: {0}", e.Name);
    }

下面是完整的可供参考的代码清单。

using System;

using System.IO;

namespace IDGFileSystemWatcher
{
  class Program
  {
    static void Main(string[] args)
    {
      string path = @"D:\IDG";
      MonitorDirectory(path);
      Console.ReadKey();
    }
    private static void MonitorDirectory(string path)
    {
      FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
      fileSystemWatcher.Path = path;
      fileSystemWatcher.Created += FileSystemWatcher_Created;
      fileSystemWatcher.Renamed += FileSystemWatcher_Renamed;
      fileSystemWatcher.Deleted += FileSystemWatcher_Deleted;
      fileSystemWatcher.EnableRaisingEvents = true;
    }

    private static void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
    {
      Console.WriteLine("File created: {0}", e.Name);
    }

    private static void FileSystemWatcher_Renamed(object sender, FileSystemEventArgs e)
    {
      Console.WriteLine("File renamed: {0}", e.Name);
    }

    private static void FileSystemWatcher_Deleted(object sender, FileSystemEventArgs e)
    {
      Console.WriteLine("File deleted: {0}", e.Name);
    }
  }
}

假设 IDG 文件夹是在 E 盘内,接下来把 Console 运行起来,然后在 IDG 文件夹内创建一个新文件,不出意外的话,你会观察到这个新建的文件名将会出现在 控制台 上,说明 FileSystemWatcher_Created 被成功触发,参考下图:

译文链接:https://www.infoworld.com/article/3185447/how-to-work-with-filesystemwatcher-in-c.html

到此这篇关于C#中FileSystemWatcher使用教程的文章就介绍到这了,更多相关C# FileSystemWatcher使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中多态、重载、重写区别分析

    C#中多态、重载、重写区别分析

    这篇文章主要介绍了C#中多态、重载、重写区别,采用实例较为通俗易懂的分析了多态、重载的重写的概念与用法,对于C#初学者有非常不错的借鉴价值,需要的朋友可以参考下
    2014-09-09
  • Unity读取Excel文件转换XML格式文件

    Unity读取Excel文件转换XML格式文件

    这篇文章主要为大家详细介绍了Unity读取Excel文件转换XML格式文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C#中DataTable的创建与遍历实现

    C#中DataTable的创建与遍历实现

    这篇文章主要介绍了C#中DataTable的创建与遍历实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • C#计算2个字符串的相似度

    C#计算2个字符串的相似度

    这篇文章主要为大家详细介绍了C#计算2个字符串相似度的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#开启线程的四种方式小结

    C#开启线程的四种方式小结

    在C#中,多线程编程是处理并发操作、提高程序性能的重要手段,C#提供了多种方式来创建和管理线程,下面将介绍四种常用的开启线程的方法,并附上相应的实现代码,需要的朋友可以参考下
    2024-06-06
  • Unity实现图形相交检测

    Unity实现图形相交检测

    这篇文章主要为大家详细介绍了Unity实现图形相交检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#简单实现防止多个程序运行的方法

    C#简单实现防止多个程序运行的方法

    这篇文章主要介绍了C#简单实现防止多个程序运行的方法,涉及C#进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-02-02
  • WPF实现背景灯光随鼠标闪动效果

    WPF实现背景灯光随鼠标闪动效果

    这篇文章主要为大家详细介绍了WPF实现背景灯光随鼠标闪动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • WPF实现页面的切换的示例代码

    WPF实现页面的切换的示例代码

    本文主要介绍了WPF实现页面的切换的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • C#中整理了几种字符串截取方法小结

    C#中整理了几种字符串截取方法小结

    本文给大家整理了几种字符串截取方法, (Substring);(Remove);(Replace)方法和split方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01

最新评论