C# FileSystemWatcher文件监控
对于一个需要管理本地文件的应用来说,监控文件的运行及修改状态十分重要,在运行中,我们如何知道文件的基本属性的变化?
C#为我们提供了一个文件监控类(FileSystemWatcher),它定义了几个文件操作的事件,当我们对文件操作时便会引起这些事件,通过订阅这些事件,并添加自己的处理程序可实现对文件的监控。
FileSystemWatcher的属性
属性 | 说明 |
---|---|
path | 设置要监控的目录或者文件 |
NotifyFilter | 它是NotifyFilters枚举值的组合,NotifyFilters枚举要监控的内容,它的枚举值是要监控的文件或文件夹属性。它的枚举值有,Attributes、CreationTime、DirectoryName、FileName、LastAccess等等。若有多个组合可使用二元运算符OR合并这些值。 |
Filter | 指定要监控的文件过滤,例如,*.txt |
例
用FileSystemWatcher监控文件的Changed、Created、Deleted、Renamed事件,当文件引发上述事件后,便通过自定义的处理程序显示改变情况。(本例使用wpf应用程序)
- xaml代码:
<Grid><Grid.RowDefinitions><RowDefinition Height="1*"/><RowDefinition Height="1*"/><RowDefinition Height="8*"/></Grid.RowDefinitions><StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBox x:Name="tb1" Height="30" Width="300" TextChanged="Tb1_TextChanged"/><Button x:Name="btn1" Content="Open File" Margin="30 0 0 0" Click="Open_Click"/></StackPanel><Button x:Name="btn2" Grid.Row="1" Height="30" Width="200" Content="Watch!" IsEnabled="False" Click="Watch_Click"/><ListBox x:Name="lb1" Grid.Row="2" Margin="10"/>
</Grid>
效果截图
2.为ListBox添加消息
private void AddMessage(string message)
{Dispatcher.BeginInvoke(new Action(() => lb1.Items.Insert(0, message)));
}
3.实例化FileSystemWatcher并添加需监控属性的事件。
private FileSystemWatcher watcher;
public MainWindow()
{InitializeComponent();this.DataContext = this;watcher = new FileSystemWatcher();watcher.Changed += (s, e) => AddMessage(e.FullPath+" had changed");watcher.Deleted += (s, e) => AddMessage(e.FullPath + " had Deleted");watcher.Renamed += (s, e) => AddMessage(e.OldFullPath + " had renamed " + e.FullPath);watcher.Created += (s, e) => AddMessage(e.FullPath + "had created");
}
本例中订阅了四个事件,Changed文件修改事件,Deleted文件删除事件,Renamed重命名事件,Created文件创建事件。
4. 打开文件添加窗口
private void Open_Click(object sender, RoutedEventArgs e)
{OpenFileDialog openFile = new OpenFileDialog();openFile.Filter = "(*.*)|*.*";if(openFile.ShowDialog()==true){this.tb1.Text = openFile.FileName;}
}
OpenFileDialog的ShowDialog会返回一个bool值,当选择好文件后会返回true,当取消此窗口后会返回false。
5.判断Watch按键是否可用
private void Tb1_TextChanged(object sender, TextChangedEventArgs e)
{btn2.IsEnabled = !string.IsNullOrEmpty(this.tb1.Text);
}
当路径框不为空时,watch按钮可用。
6.开始监控文件
private void Watch_Click(object sender, RoutedEventArgs e)
{watcher.Path = System.IO.Path.GetDirectoryName(this.tb1.Text);watcher.Filter = System.IO.Path.GetFileName(this.tb1.Text);watcher.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.LastWrite| NotifyFilters.FileName | NotifyFilters.Deleted;AddMessage("Watching..." + this.tb1);watcher.EnableRaisingEvents = true;
}
- EnableRaisingEvents属性设置为true时表示开始监控。
- Path属性指定要监控的目录,通过Path的GetDirectoryName方法可以从路径字符串中获取路径。
- Filter指定要过滤的文件,通过Path的GetFileName获取要筛选的文件,
可指定Filter为(.)即为监控整个目录。
7.运行
创建文件
删除文件
感谢观看
C# FileSystemWatcher文件监控相关推荐
- 详解C#使用FileSystemWatcher文件监控对象的感受
** 详解C#使用FileSystemWatcher文件监控对象的感受 ** 本文和大家一起来学习分享一下C#使用FileSystemWatcher文件监控对象,希望对你有帮助. 最近在项目中有这么个 ...
- C# FileSystemWatcher文件监控实例
FileSystemWatcher 可以使用FileSystemWatcher组件监视文件系统,并对文件系统的改变作出反应.通过使用FileSystemWatcher组件,在特定的文件或目录被创建.修 ...
- 使用文件监控对象FileSystemWatcher实现数据同步
使用文件监控对象FileSystemWatcher实现数据同步 原文 使用文件监控对象FileSystemWatcher实现数据同步 最近在项目中有这么个需求,就是得去实时获取某个在无规律改变的文本文 ...
- 文件监控之FileSystemWatcher(c++)
文件监控之FileSystemWatcher(c++) 为了监控web程序的静态文件是否被恶意改动,所以学习了一下FileSystemWatcher 类对文件的监控,由于还在初级阶段,这里只贴一下关 ...
- C# FileSystemWatcher 实时监控文件的增加、修改、重命名和删除实例
好多时候,我们都需要知道某些目录下的文件什么时候被修改.删除过等,如果能用miniFilter驱动过滤来做的话当然是最好不过了,这是内核级别的,当然也比较复杂.如果只是简单的记录就没必要用驱动过滤级别 ...
- 谈谈C#文件监控对象FileSystemWatcher使用感受
谈谈C#文件监控对象FileSystemWatcher使用感受 2017年07月07日 14:52:32 savagelin 阅读数:3530 最近在项目中有这么个需求,就是得去实时获取某个在无规律改 ...
- C# FileSystemWatcher 多文件夹、多文件类型文件监控增加、修改、重命名和删除实例
在上一次讲过了FileSystemWatcher 实时监控文件的增加.修改.重命名和删除,具体怎么实现就不再去阐述,参考如下文 C# FileSystemWatcher 实时监控文件的增加.修改.重命 ...
- 使用.NET FileSystemWatcher对象监控磁盘文件目录的改变
原文(英文):http://www.techrepublic.com/article/use-the-net-filesystemwatcher-object-to-monitor-directory ...
- python实时监控文件目录_c#教程之c#使用filesystemwatcher实时监控文件目录的
/// /// 文件监控类,用于监控指定目录下文件以及文件夹的变化 /// public class FileWatcher { private FileSystemWatcher _watcher ...
最新文章
- 2021年上海市高考成绩查询,2021上海市地区高考成绩排名查询,上海市高考各高中成绩喜报榜单...
- Android Load Picture Asynchronously
- 【知识图谱】知识融合
- Web API Help Page Install WebApiTestClient 简单的测试客户端
- Spring Security——关闭未认证时重定向(302)到登录页面(loginPage)
- VTK:结构化网格之StructuredGrid
- 软件项目组织管理(二、三)项目管理与信息技术环境、项目管理过程组
- python怎么做软件界面_python – 如何自定义桌面应用程序的标题栏和窗口
- 如何从wireshark 抓包中的RTP导出 H.264 PAYLOAD,变成可用暴风直接播放的H264 裸码流文件
- python爬虫教材推荐 豆瓣_学习python爬虫推荐书籍
- git lab提交记录中有 merge branch ‘xxx‘ of of http:xxx into xxx
- 大数据学习路线详解,零基础学大数据学习路线
- 2015-12-12 java hibernate 微信表情昵称保存
- 【vue-清除默认样式-完结】
- 大学生学计算机打字速度,浅谈提高小学生计算机打字速度
- Activiti7.0 EL NullPoint问题
- 总结十二:管理经验法则和名言
- vmware使用u盘安装系统
- SAP中采购订单中的统计型字段分析
- ssh连接的时候,出现“THE AUTHENTICITY OF HOST XXX CAN’T BE ESTABLISHED”警告