LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 监听文件和目录系统变化(FileSystemWatcher)

admin
2023年12月26日 22:0 本文热度 572

FileSystemWatcher常用来监听文件系统中的文件或者文件夹的变化。

一、常用事件

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

二、基本属性

(1) Path :设置要监视的目录的路径。
(2) IncludeSubdirectories :设置是否级联监视指定路径中的子目录。
(3) Filter :设置筛选字符串,用于确定在目录中监视哪些类型的文件。
(4) NotifyFilter :设置文件的哪些属性的变动会触发 Changed事件,同时监控多个属性变动可以按“或”组合。(默认值为 NotifyFilter.LastWrite | NotifyFilter.FileName | NotifyFilter.DirectoryName 组合)
(5) EnableRaisingEvents :设置是否开始监控。(默认为false)

NotifyFilters的属性如下:

属性名意思
Attributes文件或文件夹的属性
CreationTime文件或文件夹的创建时间
DirectoryName目录名
FileName文件名
LastAccess文件或文件夹上一次打开的日期
LastWrite上一次向文件或文件夹写入内容的日期
Security文件或文件夹的安全设置
Size文件或文件夹的大小

三、代码示例

   private static void FileWatcher(string path, string filter)    {      FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();      fileSystemWatcher.Path = path;      fileSystemWatcher.NotifyFilter = NotifyFilters.LastAccess                                     | NotifyFilters.LastWrite       | NotifyFilters.FileName         |NotifyFilters.DirectoryName;       //文件类型,支持通配符,“*.txt”只监视文本文件      fileSystemWatcher.Filter = filter;    // 监控的文件格式      watch.IncludeSubdirectories = true;  // 监控子目录      fileSystemWatcher.Changed += new FileSystemEventHandler(OnProcess);      fileSystemWatcher.Created += new FileSystemEventHandler(OnProcess);      fileSystemWatcher.Renamed += new RenamedEventHandler(OnRenamed);      fileSystemWatcher.Deleted += new FileSystemEventHandler(OnProcess);      //表示当前的路径正式开始被监控,一旦监控的路径出现变更,FileSystemWatcher 中的指定事件将会被触发。      fileSystemWatcher.EnableRaisingEvents = true;    } private static void OnProcess(object source, FileSystemEventArgs e) {     if (e.ChangeType == WatcherChangeTypes.Created)     {           OnCreated(source, e);   }     else if (e.ChangeType == WatcherChangeTypes.Changed)     {           OnChanged(source, e);     }     else if (e.ChangeType == WatcherChangeTypes.Deleted)     {           OnDeleted(source, e);     } } private static void OnCreated(object source, FileSystemEventArgs e)    {      Console.WriteLine("File created: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);    }    private static void OnChanged(object source, FileSystemEventArgs e)    {      Console.WriteLine("File changed: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);    }    private static void OnDeleted(object source, FileSystemEventArgs e)    {      Console.WriteLine("File deleted: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);    } private static void OnRenamed(object source, FileSystemEventArgs e)    {      Console.WriteLine("File renamed: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);    }

总结

1、重命名会触发两个事件,Renamed和Changed。
2、FileSystemWatcher类本身就是多线程的控件,每实例化一个FileSystemWatcher自动就会创建一条线程。
3、创建、修改、删除事件传递的是FileEventArgs对象,而重命名事件传递的是RenameEventArgs对象。
4、如果需要同时监控多个文件,需要创建FileSystemWatcher数组,每个文件用一个FileSystemWatcher进行监控。


该文章在 2023/12/26 22:00:53 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved