











在实际应用开发中,有时候需要操作本地文件或文件夹,还需监控磁盘目录的变化,比如当新增或删除文件时,提示变更信息,以起到警示作用。合理的文件监控,还可以起到事半功倍的效果,今天我们以一些简单的小例子,简述基于.NET的Windows窗体编程中FileSystemWatcher控件的相关应用,仅供学习分享使用,如有不足之处,还请指正。

在WinForms开发框架中,要实现磁盘上文件目录监控,主要是通过以下控件实现:
FileSystemWatcher是 .NET 中用于监听文件系统变化的类,位于 System.IO 命名空间下。当指定目录中的文件或子目录发生创建、删除、修改或重命名时,它会触发相应事件通知程序。
FileSystemWatcher常用属性如下所示:
FileSystemWatcher常用事件如下所示:
首先拖动FileSystemWatcher控件到Form表单中,由于FileSystemWatcher控件不需要显示在UI页面中,所以在显示底部托盘中,选择控件并在控件的属性窗口中,查看默认属性,如下所示:

在属性窗口中切换到事件Tab页,然后在对应的Created,Deleted,Changed,Renamed,Error事件文件框中,双击添加对应的事件处理方法,如下所示:

在Form的Load事件中,为FileSystemWatcher控件指定需要监听的路径,和监听子目录属性,如下所示:
private void FrmFileSystemWatcher_Load(object sender, EventArgs e)
{
this.fileSystemWatcher1.Path = @"D:\test";
this.fileSystemWatcher1.EnableRaisingEvents = true;//是否启用组件
this.fileSystemWatcher1.IncludeSubdirectories = true;
this.txtFilePath.Text = this.fileSystemWatcher1.Path;
//this.fileSystemWatcher1.NotifyFilter = NotifyFilters.CreationTime;//设置
}
在FileSystemWatcher控件的事件处理方法中,增加业务输出逻辑,如下所示:
private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e)
{
this.txtInfo.AppendText(e.FullPath + "被修改了," + e.ChangeType.ToString() + Environment.NewLine);
}
private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e)
{
this.txtInfo.AppendText(e.FullPath + "被创建了," + e.ChangeType.ToString() + Environment.NewLine);
}
private void fileSystemWatcher1_Deleted(object sender, FileSystemEventArgs e)
{
this.txtInfo.AppendText(e.FullPath + "被删除了," + e.ChangeType.ToString() + Environment.NewLine);
}
private void fileSystemWatcher1_Error(object sender, ErrorEventArgs e)
{
this.txtInfo.AppendText("出错了:"+e.GetException().Message + Environment.NewLine);
}
private void fileSystemWatcher1_Renamed(object sender, RenamedEventArgs e)
{
this.txtInfo.AppendText(e.FullPath + "被重命名了," + e.ChangeType.ToString() + Environment.NewLine);
}
运行示例,软件启动时D:\test目录被监听,当手动删除文件时,会提示文件被删除吧;当修改文件内容时,会提示文件被修改了;当文件名称被修改时,会提示文件被重命名了;当从回收站还原被删除的文件时,会提示文件被创建了。效果如下所示:

以上就是《基于.NET的Windows窗体编程之WinForms文件监控》的全部内容,旨在抛砖引玉,希望可以一起学习,共同进步!!!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。