如何通过 C# 自动捕获一个文件的变更?

咨询区

  • PaulB

请问在 C# 中如何实现当一个磁盘文件的变更,让我的程序马上能感知到?

回答区

  • Dirk Vollmar

在 C# 中有一个 FileSystemWatcher 类,它专门用来做文件的变更感知,大概有如下四类通知事件:

  1. Changed

文件内容变更通知,参考连接:http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.changed.aspx

  1. Created

文件创建变更通知,参考连接:http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.created.aspx

  1. Deleted

文件删除变更通知,参考连接:https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher.deleted?redirectedfrom=MSDN&view=net-5.0

  1. Renamed

文件重命令通知,参考连接:http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.renamed.aspx

下面的代码就是用来监控 D:\test 目录下的所有 txt 文件。

class Program{static void Main(string[] args){CreateFileWatcher(@"D:\test");Console.ReadLine();}public static void CreateFileWatcher(string path){// Create a new FileSystemWatcher and set its properties.FileSystemWatcher watcher = new FileSystemWatcher();watcher.Path = path;/* Watch for changes in LastAccess and LastWrite times, and the renaming of files or directories. */watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite| NotifyFilters.FileName | NotifyFilters.DirectoryName;// Only watch text files.watcher.Filter = "*.txt";// Add event handlers.watcher.Changed += new FileSystemEventHandler(OnChanged);watcher.Created += new FileSystemEventHandler(OnChanged);watcher.Deleted += new FileSystemEventHandler(OnChanged);watcher.Renamed += new RenamedEventHandler(OnRenamed);// Begin watching.watcher.EnableRaisingEvents = true;}// Define the event handlers.private static void OnChanged(object source, FileSystemEventArgs e){// Specify what is done when a file is changed, created, or deleted.Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);}private static void OnRenamed(object source, RenamedEventArgs e){// Specify what is done when a file is renamed.Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);}}
ebaf282d424e9a759ad65a0797f89eef.png

当然如何你想监控 D:\test 下包括子目录的 txt 文件,可以配置 IncludeSubdirectories 属性,参考如下代码:

watcher.IncludeSubdirectories = true;

点评区

FileSystemWatcher 非常强大,在 .NETCore 中实现对 appsettings 的监控,用的就是它作为底层实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新随笔

2012年2月27日 岁数大了,特别愁得慌。 转载于:https://www.cnblogs.com/laozhang/archive/2012/02/27/2369771.html

Rails 开发小贴士积累

Model (ActiveRecord) 中 Boolean 类型的属性,在做是否存在的校验的时候,不能使用 presence: true ,而是要使用 inclusion: { in: [true, false] }。否则,当值为 false 的时候,会校验失败。 ClienSideValidations 对 Boolean 类型…

安装分布式文件系统MooseFS

示意图#4种角色共有的安装步骤yum install gcc zlib zlib-devel fuse fuse-devel fuse-libs libpcap libpcap-devel net-tools useradd mfs -s /sbin/nologin cd /download/ tar xf moosefs-2.0.80.tar.gz cd moosefs-2.0.80 ./configure \ --prefix/usr/local/mfs \ --with-de…

太爽了!宅男醒来后,发现自己变成了……

全世界只有3.14 % 的人关注了爆炸吧知识小编这两天看了一本关于数学家的故事后开了一个脑洞:如果把那些数学大神的故事写成爽文会是什么样?以下内容,纯属娱乐和虚构。前方高能预警第一章 称王冠原来是这样的“阿基米德,国王叫你呢…

陈睿学长在CUIT建校70周年校庆上的演讲

【个人成长】| 总结/Edison Zhou1睿叔演讲背景10月23号,我的母校成都信息工程大学(以下简称CUIT)举行了建校70周年(1951~2021)校庆,B站(哔哩哔哩)董事长兼CEO陈睿(睿叔&a…

SSH基本原理和免密码登录

SSH基本原理和免密码登录SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全…

poj2442Sequence(优先队列)

http://poj.org/problem?id2442 题解http://www.cnblogs.com/372465774y/archive/2012/07/09/2583866.html 本来写的二维数组 &#xff0c;直接対一维排序 不知道为嘛一直WA 只好该为一维的 就AC了 View Code 1 #include <iostream>2 #include<cstdio>3 #includ…

ExtJS 4.0

基本组件&#xff1a; xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单的按钮 cycle Ext.CycleButton 带下拉选项菜单的按钮 buttongroup Ext.ButtonGroup 编组…

967c语言程序设计是什么,2018年湖南师范大学数学与计算机科学院967C语言程序设计和数据结构[专硕]之C程序设计考研核心题库...

一、选择题1&#xff0e; 设有以下函数&#xff1a;则下面对函数指针的定义和赋值均是正确的是( )。A.B.C. D. 【答案】D【解析】函数指针的一般定义形式为&#xff1a;数据类型(*指针变量名)( )。定义函数指针时&#xff0c;对应的类型名以及 返回值类型都要和对应函数的参数列…

System.Text.Json 中的字符编码

System.Text.Json 中的字符编码Intro默认的 System.Text.Json 序列化的时候会把所有的非 ASCII 的字符进行转义&#xff0c;这就会导致很多时候我们的一些非 ASCII 的字符就会变成 \uxxxx 这样的形式&#xff0c;很多场景下并不太友好&#xff0c;我们可以配置字符编码来解决被…

maven3安装和使用笔记

2019独角兽企业重金招聘Python工程师标准>>> 1、下载 http://maven.apache.org/download.cgi 2、解压 3、配置环境变量 M2_HOME D:\program\apache-maven-3.3.3 Path : %M2_HOME%\bin 4、验证是否成功 打开命令行窗口&#xff0c;输入mvn -version&#xff0c;显示…

数学,原来可以这么美!

全世界只有3.14 % 的人关注了爆炸吧知识法国著名艺术家罗丹曾说&#xff1a;世界中从不缺少美&#xff0c;而是缺少发现美的眼睛。对于我们的眼睛&#xff0c;不是缺少美&#xff0c;而是缺少发现。在艺术者眼中&#xff0c;一切都是美的&#xff0c;因为他锐利的慧眼&#xff…

Hadoop的伪分布安装 hadoop的核心思想

Hadoop的伪分布安装hadoop的安装分为本地模式、伪分布模式、集群模式。本地模式是运行在本地&#xff0c;只负责存储&#xff0c;没有计算功能&#xff0c;本书不讲述。伪分布模式是在一台机器上模拟分布式部署&#xff0c;方便学习和调试。集群模式是在多个机器上配置hadoop&a…

jQuery获取及设置单选框,多选框,文本框内容

在工作中,text,radio,checkbox,select在开发过程中是必不可少的一部分.在开发过程中经常要处理页面表单元素. Eg: 在复选框checkBox中获取checked的value值,来触发和调用其它页面表单元素,制作互动性更强更友好的用户体验. jQuery通过元素$(#id)产生一个object对象,通过对获…

js局部打印

因为需要用到这个东西&#xff0c;所以很无耻的拾人牙慧&#xff0c;收在博客里了~ ?<!DOCTYPE html><html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>无标题文档</title>&l…

c语言出勤成绩,C语言课程设计学生考勤系统文档推荐 (10页)-原创力文档

C语言程序设计课程设计报告设计题目&#xff1a; 学生考勤系统设计专 业 微电子科学与工程班 级 微电 131学 生 赵 杨 怡指导教师年 学期设计任务&#xff1a; C 语言课程设计任务书 10题目&#xff1a;学生考勤系统设计功能&#xff1a;学生考勤系统应包含各班学生的全部信息。…

lambda与内置函数

2019独角兽企业重金招聘Python工程师标准>>> 学习条件运算时&#xff0c;对于简单的 if else 语句&#xff0c;可以使用三元运算来表示&#xff0c;即 # 普通条件语句 if 1 1:name eddy else:name yys# 三元运算 name eddy if 1 1 else yys lambda表达式 # ###…

年仅21岁,干掉6位诺贝尔奖得主,被誉为科学界最强杀手,却惨被人骂成一个笑话...

全世界只有3.14 % 的人关注了爆炸吧知识在刚过去的国庆假期期间&#xff0c;超模君总是在不经意间看到许多诡异的小视频&#xff01;而一提起充满诡异气息的视频&#xff0c;《走近科学》这档节目堪称经典&#xff01;然而在去年&#xff0c;经典科普电视节目《走近科学》迎来最…

vsftpd使用方法小结、Linux安装JDK出现“NoClassDefFoundError: /Object”的解决方案、ubuntu 12.04安装jdk

vsftpd使用方法小结vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字&#xff0c;它可以运行在诸如 Linux, BSD, Solaris,HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。比如&#xff1a; 非常高的安全性需求带宽限制良好的可伸缩性创建虚拟用户的可能性…

从函数中返回多个值的方法

There are several ways to return multiple values from functions. In this topic, we’re going to look over the 5 most common techniques to pass 2 or more values from functions. The 5 techniques are: 1、Returning variables in Global scope 2、Returning a Coll…