在C#中,`FileSystemWatcher` 类是一个用于监视文件系统中文件或目录更改的非常有用的组件。以下是一个简单的示例,展示了如何使用 `FileSystemWatcher` 来监视特定目录中的文件变化(如创建、删除、更改等)。
using System;
using System.IO;
class Program
{
static void Main()
{
// 创建一个 FileSystemWatcher 来监视指定目录
using (FileSystemWatcher watcher = new FileSystemWatcher())
{
// 设置监视器要监视的目录
watcher.Path = @"C:\path\to\watch";
// 你可以过滤要监视的文件类型
// 例如,只监视 .txt 文件
watcher.Filter = "*.txt";
// 设置监视的事件类型
watcher.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
// 只添加你感兴趣的事件处理程序
watcher.Changed += OnChanged;
watcher.Created += OnChanged;
watcher.Deleted += OnChanged;
watcher.Renamed += OnRenamed;
// 开始监视
watcher.EnableRaisingEvents = true;
// 等待用户按 Enter 退出程序
Console.WriteLine("Press enter to exit the application.");
Console.ReadLine();
}
}
// 定义事件处理程序来响应文件系统更改
private static void OnChanged(object source, FileSystemEventArgs e)
{
// 显示发生了什么更改
Console.WriteLine($"File: {e.FullPath} {e.ChangeType}");
}
// 定义事件处理程序来响应文件重命名
private static void OnRenamed(object source, RenamedEventArgs e)
{
// 显示文件重命名事件
Console.WriteLine($"File: {e.OldFullPath} renamed to {e.FullPath}");
}
}
这段代码创建了一个 `FileSystemWatcher` 实例来监视 `C:\path\to\watch` 目录(请根据你的需要替换为实际路径)中的 `.txt` 文件。它注册了几个事件处理程序来处理文件更改、创建、删除和重命名事件。当检测到这些事件时,会在控制台中输出相关信息。
注意:`FileSystemWatcher` 组件在监视文件系统更改时可能会遇到一些问题,比如它可能会错过一些更改(尤其是在高负载情况下),或者由于权限问题而无法访问某些目录或文件。因此,在使用时请务必注意这些潜在的问题。