FileSystemWatcher使用方法
在实际工作中,我们经常有需要监控部分文件或文件夹更改的需求。这时候,FileSystemWatcher就派上用场了。
首先我们new一个FileSystemWatcher实例
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
然后我们可以通过设置Path来指定一个监视目录。
fileSystemWatcher.Path = @"D:\test";
注意,这里只能是一个目录,而不能是一个文件。
那么如果我们只想监视某个文件怎么办呢?
可以设置Filter来指定只监控某种类型的文件,或者某个文件。
fileSystemWatcher.Filter = "*.txt";
设置只监控txt文件,也可以设置成test.txt
,这样就只监控text.txt这一个文件。
设置是否同时监控子目录
fileSystemWatcher.IncludeSubdirectories = true;
true
为监控子目录。
还可以设置监听哪些改变
fileSystemWatcher.NotifyFilter = NotifyFilters.Attributes
| NotifyFilters.CreationTime
| NotifyFilters.DirectoryName
| NotifyFilters.FileName
| NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.Security
| NotifyFilters.Size;
NotifyFilters的具体含义如下:
属性名 | code | 意思 |
---|---|---|
Attributes | 4 | 文件或文件夹的属性。 |
CreationTime | 64 | 文件或文件夹的创建时间。 |
DirectoryName | 2 | 目录名。 |
FileName | 1 | 文件的名称。 |
LastAccess | 32 | 文件或文件夹上一次打开的日期。 |
LastWrite | 16 | 上一次向文件或文件夹写入内容的日期。 |
Security | 256 | 文件或文件夹的安全设置。 |
Size | 8 | 文件或文件夹的大小。 |
监控事件分为Changed
、Created
、Deleted
、Renamed
、Error
五种。
fileSystemWatcher.Changed += OnChanged;
fileSystemWatcher.Created += OnCreated;
fileSystemWatcher.Deleted += OnDeleted;
fileSystemWatcher.Renamed += OnRenamed;
fileSystemWatcher.Error += OnError;
简易使用如下:
private static void OnChanged(object sender, FileSystemEventArgs e)
{
if (e.ChangeType != WatcherChangeTypes.Changed)
{
return;
}
Console.WriteLine($"Changed: {e.FullPath}");
}
private static void OnCreated(object sender, FileSystemEventArgs e)
{
string value = $"Created: {e.FullPath}";
Console.WriteLine(value);
}
private static void OnDeleted(object sender, FileSystemEventArgs e) =>
Console.WriteLine($"Deleted: {e.FullPath}");
private static void OnRenamed(object sender, RenamedEventArgs e)
{
Console.WriteLine($"Renamed:");
Console.WriteLine($" Old: {e.OldFullPath}");
Console.WriteLine($" New: {e.FullPath}");
}
private static void OnError(object sender, ErrorEventArgs e) =>
PrintException(e.GetException());
private static void PrintException(Exception? ex)
{
if (ex != null)
{
Console.WriteLine($"Message: {ex.Message}");
Console.WriteLine("Stacktrace:");
Console.WriteLine(ex.StackTrace);
Console.WriteLine();
PrintException(ex.InnerException);
}
}
最后,我们需要设置
fileSystemWatcher.EnableRaisingEvents = true;
来启用监听,这时候如果有更改,就会触发对应的事件了。
分类:
.net core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!