C# FileSystemWatcher对象的实例

开发 后端
这里介绍下列代码列出了C# FileSystemWatcher对象的一个简单应用实例。在这个例子中,我们监控“C:Temp”目录中是否建立了*.TXT文件。这可能是FileSystemWatcher的最简单用法。

当FileSystemWatcher调用一个事件处理器时,它包含两个自变量——一个叫做“sender”的对象和一个叫做“e”的FileSystemEventArgs对象。我们感兴趣的自变量为FileSystemEventArgs自变量。这个对象中包含有提交事件的原因。以下是FileSystemEventArgs对象的一些属性:

属性:

1.Name——这个属性中使事件被提交的文件的名称。其中并不包含文件的路径——只包含使用事件被提交的文件或目录名称。
2.ChangeType——这是一个WatcherChangeTypes,它指出要提交哪个类型的事件。其有效值包括:
◆Changed
◆Created
◆Deleted
◆Renamed
3.FullPath——这个属性中包含使事件被提交的文件的完整路径,包括文件名和目录名。

代码实例

下列代码列出了C# FileSystemWatcher对象的一个简单应用实例。在这个例子中,我们监控“C:Temp”目录中是否建立了*.TXT文件。这可能是FileSystemWatcher的最简单用法。

  1. publicvoid CreateWatcher(){  
  2. //Create a new FileSystemWatcher.  
  3. FileSystemWatcher watcher = newFileSystemWatcher();  
  4. //Set the filter to only catch TXT files.  
  5. watcher.Filter = "*.txt";  
  6. //Subscribe to the Created event.  
  7. watcher.Created += new  
  8. FileSystemEventHandler(watcher_FileCreated);  
  9. //Set the path to C:Temp  
  10. watcher.Path = @"C:Temp";  
  11. //Enable the FileSystemWatcher events.  
  12. watcher.EnableRaisingEvents = true;  
  13. }  
  14. void watcher_FileCreated(object sender, FileSystemEventArgs e){  
  15. //A new .TXT file has been created in C:Temp  
  16. Console.WriteLine("A new *.txt file has been created!");  

应用

最初,FileSystemWatcher的用途可能并不明显。当然,如果一个文件或目录发生改变,它会向我们发出警报,但在哪些情况下我们需要这类信息呢?

如果一个系统允许客户端上传文件进行处理,这时可能就要用到C# FileSystemWatcher对象。尽管很明显我们已经进入Web服务和SOA时代,但许多系统仍然要将平面文件插入到某些位置,不管是FTP服务器或网络共享文件夹中。我已经将C# FileSystemWatcher对象应用到这种类型的系统中,虽然并不是完全没有出错,但它在“调查”目录变化方面确实有一定的优势。

如果你想让两个文件保持同步,这时也可以用到C# FileSystemWatcher对象。你可以用FileSystemWatcher同时监控这两个文件的位置,如果其中一个出现更新,就提交一个Changed事件;然后你就可以将这些改变复制到其它系统/文件中。

如果你的系统有任何功能需要进行文件或目录监控,你必须仔细了解那个组件,看是否可以使用C# FileSystemWatcher对象。在我的应用过程中,这个对象至少为送交给系统的每个文件节省了10秒钟的时间。

【编辑推荐】

  1. C#跳跃语句学习经验
  2. 简单描述C#哈希值
  3. 如何用C#和ADO.NET访问
  4. C#建立Web Service
  5. 浅析C# 匿名方法
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-20 17:13:37

C# FileSyst

2021-03-15 08:18:23

C#反射模块

2009-09-01 18:29:10

C#继承C#多态

2009-08-28 16:50:25

C# PromptPo

2009-08-28 16:37:32

C# for循环

2009-08-27 13:30:11

C# interfac

2009-08-24 16:08:45

C# DrawStri

2009-08-31 17:16:12

C#实现接口

2009-08-27 17:40:21

C#接口的作用

2009-08-26 14:31:08

C#打印文件

2009-08-31 17:30:10

C#接口的作用

2009-09-02 19:12:37

C#递归

2009-08-25 16:03:51

C# SQLDMO对象

2009-08-26 10:34:59

C# Hashtabl

2009-08-31 09:44:23

C# Employee

2009-09-02 15:41:21

C# HTTPWebR

2009-09-17 18:14:05

C#动态数组

2009-09-01 18:25:32

C#结构实例

2009-08-17 17:49:20

C# 枚举

2009-08-18 10:17:25

C#枚举类型
点赞
收藏

51CTO技术栈公众号