这篇文章主要给大家介绍了关于C#中FileSystemWatcher使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


作为一个开放的图表,系统下的FileSystemWatcher。IO通常用于监控文件系统的变化。当文件系统中的文件或文件夹被修改时,会自动触发相应的回调事件。

为了了解FileSystemWatcher如何工作,可以指定一个受监视的文件夹。当受监控的文件夹被修改时,可能会触发以下一些事件。

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

接下来,我们将在Visual Studio中创建一个控制台程序,以了解如何监控文件。但建议将Console部署为Windows服务,便于在系统中永久监控。一旦被监控的路径发生变化,它会自动发出通知事件。

说了这么多,还是一起研究代码吧。

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; }

你可以重点看一下上面的事件是如何注入的,我还写了一句话:文件系统观察者。enableRaisingEvents = true。这是什么意思?表示当前路径正式开始被监控。一旦被监视的路径被更改,FileSystemWatcher中的指定事件将被触发。

扫描上面定义的事件事件,都定义了事件处理程序,比如:FileSystemWatcher_Created,filesystem watcher _ renamed,filesystem watcher _ 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中,然后运行控制台,然后在IDG文件夹中创建一个新文件。毫不奇怪,您将观察到新创建的文件名将出现在控制台上,表明FileSystemWatcher_Created已被成功触发。请参考下图:


翻译链接:https://www . infoworld . com/article/3185447/如何使用文件系统watcher-in-c.html

这就是这篇关于在C#中使用FileSystemWatcher的教程的文章。有关在C #中使用文件系统观察器的更多信息