使用 FileSystemWatcher 监视指定目录中的更改。可监视指定目录中的文件或子目录的更改。可以创建一个组件来监视本地计算机、网络驱动器或远程计算机上的文件。
具体的操作大家可以参考微软MSDN中的帮助:
http://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher.aspx
那么我在这里主要说一下在我们近期的一个项目中使用到的文件监控
这个主要用到了WaitForChangedResult对象而不是FileSystemWatcher的Created事件
/// <summary>
/// 请求内容
/// </summary>
private static string[] requestContents;
//请求是否响应(生成test文件)
public static bool IsResponse
{
get { return isResponse; }
set { isResponse = value; }
}
/// <summary>
/// 侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件
/// </summary>
public static void UsingFileSystemWatcher()
{
FileSystemWatcher watcher = new FileSystemWatcher();
//获取或设置要监视的目录的路径。
watcher.Path = @"C:/a/b/c";
//获取或设置筛选字符串,用于确定在目录中监视哪些文件。
watcher.Filter = "test.txt";
//获取或设置一个值,该值指示是否启用此组件。
watcher.EnableRaisingEvents = true;
//设置要监视的更改类型
watcher.NotifyFilter = NotifyFilters.LastWrite;
//监视更改,3000毫秒为文件的生成时间,也就是说在3000毫秒内未生产test.txt,则超时了
//如果这里未设置的话,那么程序会一直等待,直到test.txt文件生成
WaitForChangedResult result = watcher.WaitForChanged(WatcherChangeTypes.All, 3000);
//判断是否超时
if (result.TimedOut)
isResponse = false;
else
isResponse = true;
//停用改组件
watcher.EnableRaisingEvents = false;
//释放资源
watcher.Dispose();
}
得到了具体是否生成的值后,就可以做其他的操作了。