极速手机网

C#中FileSystemWatcher的使用教程

FileSystemWatcher是监控指定文件或目录的文件的创建、删除、改动、重命名等活动;可以动态地定义需要监控的文件类型及文件属性改动的类型。
1.常用的几个基本属性:
(1) Path :设置要监视的目录的路径;(2) IncludeSubdirectories :设置是否级联监视指定路径中的子目录(3) Filter :设置筛选字符串,用于确定在目录中监视哪些类型的文件;(4) NotifyFilter :设置文件的哪些属性的变动会触发Changed事件,同时监控多个属性变动可以按“或”组合;(默认值为 NotifyFilter.LastWrite / NotifyFilter.FileName / NotifyFilter.DirectoryName 组合)
子项: Attributes -- 文件或文件夹的属性;
CreationTime -- 文件或文件夹的创建时间。
DirectoryName -- 目录名;
FileName -- 文件名。
LastAccess -- 文件或文件夹上一次打开的日期;
LastWrite -- 上一次向文件或文件夹写入内容的日期;
Security -- 文件或文件夹的安全设置。
Size    文件或文件夹的大小(常用)
2.常用事件:
(1) Changed  :当更改文件和目录时发生,可以通过NotifyFilter属性设置触发该事件的需要文件更改的属性;(2) Created  :  当创建文件和目录时发生。
(3) Deleted : 删除文件或目录时发生;(4) Renamed :重命名文件或目录时发生。
(5) FileSystemEventArgs 对象:
成员:Name:获取受影响的文件或目录的名称;注意:如果是级联监控子目录的话,该值为从监控目录的下个目录到受影响的文件的路径,而不只是受影响的文件名。
FullPath : 获取受影响的文件或目录的完全限定的路径; ChangeType :获取受影响的文件或目录的发生的事件类型。
子项:All -- 文件或文件夹的创建、删除、更改或重命名;Changed -- 文件或文件夹的更改。更改的类型包括大小、属性、安全设置、近期写入时间和近期访问时间方面的更改。
Created -- 文件或文件夹的创建;Deleted -- 文件或文件夹的删除。
Renamed   --  文件或文件夹的重命名。
(6) RenamedEventArgs 对象:
成员:Name:获取受影响的文件或目录的新名称; OldName : 获取受影响的文件或目录的旧名称。
FullPath :获取受影响的文件或目录的完全限定的路径;OldFullPath : 获取受影响的文件或目录的前一个完全限定的路径。
ChangeType :获取受影响的文件或目录的发生的事件类型;子项:All -- 文件或文件夹的创建、删除、更改或重命名。
Changed -- 文件或文件夹的更改,更改的类型包括大小、属性、安全设置、近期写入时间和近期访问时间方面的更改;Created -- 文件或文件夹的创建。
Deleted -- 文件或文件夹的删除;Renamed -- 文件或文件夹的重命名。
重点:
1、因为FileSystemWatcher类本身就是多线程的控件。也就是每实例化一个FileSystemWatcher自动就会创建一条线程。
2、我们需要利用委托进行跨线程更新UI界面,因为重命名事件传递的是RenameEventArgs对象。而创建、修改、删除事件传递的是FileEventArgs对象,所以需要声明两个委托。
3、如果需要同时监控多个文件(如监控系统全盘)。只需要创建FileSystemWatcher数组,每个文件用一个FileSystemWatcher进行监控。
创建一个简单的 file 监视:
接下来我们在 Visual Studio 中创建一个 Console 程序,用来了解如何进行文件监视。不过建议把 Console 部署成 Windows Service,这样方便在系统中常驻监控,一旦被监视的路径发生变更就会自动发出通知事件。
该说的都说了,接下来一起研究代码吧。
C#中FileSystemWatcher的使用教程
C#中FileSystemWatcher的使用教程图1
下面的代码片段展示了 MonitorDirectory 方法的内部逻辑。这个方法可用于监视指定的文件夹并且当文件夹变更时触发事件。可以看到文件夹路径是通过参数传进去的。
C#中FileSystemWatcher的使用教程
C#中FileSystemWatcher的使用教程图2
可以着重了解一下上面的 event 是如何被灌入的,而且我还写了一句 fileSystemWatcher.EnableRaisingEvents = true, 这是什么意思呢?表示当前的路径正式开始被监控,一旦监控的路径出现变更。FileSystemWatcher 中的指定事件将会被触发。
扫一下上面定义的各个 event 事件,分别都定义了该事件的处理函数。比如说:FileSystemWatcher_Created,FileSystemWatcher_Renamed,FileSystemWatcher_Deleted 。显而易见触发某一个事件就会触发它的事件处理函数,对吧,具体代码如下:
C#中FileSystemWatcher的使用教程
C#中FileSystemWatcher的使用教程图3

相关下载

下载

fileSystemWatcher

大小:2.11 MB

大家都在找