我们以一个例子来实现吧:
static void Main(string[] args)
{
FileSystemWatcher m_Watcher=new FileSystemWatcher();
m_Watcher.Path=@"d:\test";
m_Watcher.IncludeSubdirectories=true;
m_Watcher.Filter="*.*";
m_Watcher.NotifyFilter=NotifyFilters.LastWrite | NotifyFilters.FileName;
m_Watcher.Created+=new FileSystemEventHandler(OnChanged);
m_Watcher.Changed+=new FileSystemEventHandler(OnChanged);
m_Watcher.Deleted+=new FileSystemEventHandler(OnChanged);
m_Watcher.EnableRaisingEvents=true;
Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read()!='q');
}
private static void OnChanged(object sender, FileSystemEventArgs e)
{
Console.WriteLine(DateTime.Now.ToString()+" {0} {1}",e.ChangeType,e.FullPath);
}
程序比较简单,先是生成FileSystemWatcher的实例,然后进行相应的设置。我在这里设置要监控的目录
为D:\Test,监控所有文件,也即*.*。然后通过事件,添加响应事件的函数OnChanged到Created、Changed以及Deleted事件中。这样的话,当文件被创建、修改、或者被删除的时候,就能调用我们的OnChanged函数。此函数中的FileSystemEventArgs包含了具体事件的一些信息。比如被修改的文件名、被出发的事件类型等等。通过在回调函数的判断,我们就可以实现响应的操作了。
程序运行效果如下图:
【代码下载】