C# FileSystemWatcher 在监控文件夹和文件时的用法
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
FileSystemWatcher的用法,它主要是监控一个文件夹,当文件夹内的文件要是有更改就要记录下来,我就整理下我对FileSystemWatcher 的理解和用法. FileSystemWatcher 用法 在应用FileSystemWatcher对象之前,你必须了解这个对象的一些基本属性和事件。毫无疑问,这个对象的最重要的属性为“EnableRaisingEvents”属性。 这个属性决定对象在收到改变通知时是否提交事件。如果EnableRaisingEvents属性设为假,对象将不会提交改变事件。如果设为真,它将提交改变事件。下面是你在应用FileSystemWatcher对象时将要用到的其它一些重要属性/事件: 属性: Path——这个属性告诉FileSystemWatcher它需要监控哪条路径。例如,如果我们将这个属性设为“C:Temp”,对象就监控那个目录发生的所有改变。 Changed——当被监控的目录中有一个文件被修改时,就提交这个事件。值得注意的是,这个事件可能会被提交多次,即使文件的内容仅仅发生一项改变。这是由于在保存文件时,文件的其它属性也发生了改变。 事件处理 当FileSystemWatcher调用一个事件处理器时,它包含两个自变量——一个叫做“sender”的对象和一个叫做“e”的FileSystemEventArgs对象。我们感兴趣的自变量为FileSystemEventArgs自变量。这个对象中包含有提交事件的原因。以下是FileSystemEventArgs对象的一些属性: 属性: Name——这个属性中使事件被提交的文件的名称。其中并不包含文件的路径——只包含使用事件被提交的文件或目录名称。 FileSystemWatcher对象为你完成目录监控工作。如果新建、更新或删除一个文件,FileSystemWatcher将提交一个事件,通知你发生了一项改变。这样,新建一个文件后,你的程序立即就知道可以使用这个文件。立即通知改变使得你的系统以更高的效率工作,因为你不能总是“调查”目录中发生的改变,而且在两次目录扫描之间也不会有时间流失。 class Program { static void Main(string[] args) { WatcherStrat(@"D:\spring\Program", "*.*"); Console.ReadKey(); } private static void WatcherStrat(string path, string filter) { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = path; watcher.Filter = filter; watcher.Changed += new FileSystemEventHandler(OnProcess); watcher.Created += new FileSystemEventHandler(OnProcess); watcher.Deleted += new FileSystemEventHandler(OnProcess); watcher.Renamed += new RenamedEventHandler(OnRenamed); watcher.EnableRaisingEvents = true; watcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size; watcher.IncludeSubdirectories = 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("文件新建事件处理逻辑 {0} {1} {2}", e.ChangeType, e.FullPath, e.Name); } private static void OnChanged(object source, FileSystemEventArgs e) { Console.WriteLine("文件改变事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name); } private static void OnDeleted(object source, FileSystemEventArgs e) { Console.WriteLine("文件删除事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name); } private static void OnRenamed(object source, RenamedEventArgs e) { Console.WriteLine("文件重命名事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name); } } 该文章在 2023/12/26 23:06:59 编辑过 |
关键字查询
相关文章
正在查询... |