最新文章 (全部类别)
C#将List<T>导出为 CSV 文件(Excel 直接打开,无需第三方组件包)
.NET8+EF.Core开发的大型ERP系统客户端4GB电脑测试报告
线联ERP - LinERP HR+考勤系统正式上线
CSFrameworkV6旗舰版 - 复制单据功能
QMS软件简介 | 成本核算报价系统软件简介
QMS - 五金制品行业成本核算报价系统 - 货币资料
QMS - 五金制品行业成本核算报价系统 - 公共字典管理
QMS - 五金制品行业成本核算报价系统 - 物料类别
QMS - 五金制品行业成本核算报价系统 - 物料管理
QMS - 五金制品行业成本核算报价系统 - 图纸文件管理
QMS - 五金制品行业成本核算报价系统 - 供应商管理
QMS - 五金制品行业成本核算报价系统 - 车型费管理
QMS - 五金制品行业成本核算报价系统 - 制程段配置
QMS - 五金制品行业成本核算报价系统 - 产品咨询
QMS五金制品行业报价系统 - 用户操作手册 - 成本中心核算
QMS五金制品行业报价系统 - 用户操作手册 - 报价单 - Quotation
QMS五金制品行业报价系统 - 用户操作手册 - 成本汇总表
QMS五金制品行业报价系统 - 用户操作手册 - 采购评估
QMS五金制品行业报价系统 - 用户操作手册 - 成本基础资料表
QMS五金制品行业报价系统 - 用户操作手册 - 新品可行性评估
QMS - 成本核算报价管理系统软件截图
QMS五金制品行业报价系统 - 用户操作手册 - 业务员管理
QMS五金制品行业报价系统 - 用户操作手册 - 客户管理
QMS五金制品行业报价系统 - 用户操作手册 - 工艺工序维护
QMS五金制品行业报价系统 - 用户操作手册 - 设备登记
C# 使用 FluentFTP 下载文件提示乱码
DevExpress GridControl 主从表数据(Master/Detail) 应用 - 高级篇
制造行业ERP人工成本核算表
C# 把 List<T> 指定属性的值,赋值给目标对象(列转行)
C#.NET反射给对象赋值(使用TypeConverter类转换)
使用数据日志(sys_LogData)保存数据同步标记
开发框架工具栏按钮图标
ERP操作手册-表格的列被隐藏
ERP集成海康威视考勤机及导入考勤记录技术方案(原创)
FastReport.NET+.NET8高级开发篇:明细表打印图片,自动行高
框架升级:业务单据查询结果显示2种方式(显示主表、序时薄)
CSFrameworkV6最新功能:表格样式存储位置(Database=数据库,Local=本地文件)
FastReport.NET 设置报表字体平滑清晰度
C# LINQ踩坑日记:数据库存的字符串null 和 "" 是两个不同的值,所以 GroupBy 会分成两组
SQL Server主从表字段拼接更新
删除SQL登录名提示:无法删除登录名,因为该用户目前正处于登录状态
SQL Server 代理服务无法启动与修复
Windows Event Log事件日志服务无法启动与修复
锐捷(Ruijie / 睿易)EWeb 管理系统无线路由器WiFi固定MAC地址与IP
FastReport.NET报表导出PDF中文乱码解决方案
金罗门ERP - 用户操作手册 - 库存盘点操作手册
导入钉钉、海康威视原始考勤记录
电子线材行业ERP - 用户操作手册 - 月结/结账/锁帐
金罗门ERP - 用户操作手册 - 我的任务
ERP导入导出Excel资料操作手册
.net敏捷开发,创造卓越

C#监控文件夹FileSystemWatcher


  C#监控文件夹FileSystemWatcher
概述

最近学习FileSystemWatcher的用法,它主要是监控一个文件夹,当文件夹内的文件要是有更改就要记录下来,我就整理下我对FileSystemWatcher 的理解和用法.

FileSystemWatcher 用法

在应用FileSystemWatcher对象之前,你必须了解这个对象的一些基本属性和事件。毫无疑问,这个对象的最重要的属性为“EnableRaisingEvents”属性。

这个属性决定对象在收到改变通知时是否提交事件。如果EnableRaisingEvents属性设为假,对象将不会提交改变事件。如果设为真,它将提交改变事件。下面是你在应用FileSystemWatcher对象时将要用到的其它一些重要属性/事件:

属性:

Path——这个属性告诉FileSystemWatcher它需要监控哪条路径。例如,如果我们将这个属性设为“C:Temp”,对象就监控那个目录发生的所有改变。 
IncludeSubDirectories——这个属性说明FileSystemWatcher对象是否应该监控子目录中发生的改变。 
Filter——这个属性允许你过滤掉某些类型的文件发生的变化。例如,如果我们只希望在TXT文件被修改/新建/删除时提交通知,可以将这个属性设为“*txt”。在处理高流量或大型目录时,使用这个属性非常方便。 
事件

Changed——当被监控的目录中有一个文件被修改时,就提交这个事件。值得注意的是,这个事件可能会被提交多次,即使文件的内容仅仅发生一项改变。这是由于在保存文件时,文件的其它属性也发生了改变。 
Created——当被监控的目录新建一个文件时,就提交这个事件。如果你计划用这个事件移动新建的事件,你必须在事件处理器中写入一些错误处理代码,它能处理当前文件被其它进程使用的情况。之所以要这样做,是因为Created事件可能在建立文件的进程释放文件之前就被提交。如果你没有准备正确处理这种情况的代码,就可能出现异常。 
Deleted——当被监控的目录中有一个文件被删除,就提交这个事件。 
Renamed——当被监控的目录中有一个文件被重命名,就提交这个事件。 
注:如果你没有将EnableRaisingEvents设为真,系统不会提交任何一个事件。如果有时FileSystemWatcher对象似乎无法工作,请首先检查EnableRaisingEvents,确保它被设为真。

事件处理

当FileSystemWatcher调用一个事件处理器时,它包含两个自变量——一个叫做“sender”的对象和一个叫做“e”的FileSystemEventArgs对象。我们感兴趣的自变量为FileSystemEventArgs自变量。这个对象中包含有提交事件的原因。以下是FileSystemEventArgs对象的一些属性:

属性:

Name——这个属性中使事件被提交的文件的名称。其中并不包含文件的路径——只包含使用事件被提交的文件或目录名称。 
ChangeType——这是一个WatcherChangeTypes,它指出要提交哪个类型的事件。其有效值包括:Changed、Created、Deleted、Renamed 
FullPath——这个属性中包含使事件被提交的文件的完整路径,包括文件名和目录名。

FileSystemWatcher对象为你完成目录监控工作。如果新建、更新或删除一个文件,FileSystemWatcher将提交一个事件,通知你发生了一项改变。这样,新建一个文件后,你的程序立即就知道可以使用这个文件。立即通知改变使得你的系统以更高的效率工作,因为你不能总是“调查”目录中发生的改变,而且在两次目录扫描之间也不会有时间流失。



C# Code:

class Program
{
   static void Main(string[] args)
   {
      WatcherStrat(@"D:\spring\Program", "*.*");
      Console.ReadKey();
      
   }
   
   private static void WatcherStrat(string path, string filter)
   {
      
      FileSystemWatcher watcher = new FileSystemWatcher();
      watcher.Path = path;
      watcher.Filter = filter;
      watcher.Changed += new FileSystemEventHandler(OnProcess);
      watcher.Created += new FileSystemEventHandler(OnProcess);
      watcher.Deleted += new FileSystemEventHandler(OnProcess);
      watcher.Renamed += new RenamedEventHandler(OnRenamed);
      watcher.EnableRaisingEvents = true;
      watcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess
      | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size;
      watcher.IncludeSubdirectories = true;
   }
   
   private static void OnProcess(object source, FileSystemEventArgs e)
   {
      if (e.ChangeType == WatcherChangeTypes.Created)
      {
         OnCreated(source, e);
      }
      else if (e.ChangeType == WatcherChangeTypes.Changed)
      {
         OnChanged(source, e);
      }
      else if (e.ChangeType == WatcherChangeTypes.Deleted)
      {
         OnDeleted(source, e);
      }
      
   }
   private static void OnCreated(object source, FileSystemEventArgs e)
   {
      Console.WriteLine("文件新建事件处理逻辑 {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
   }
   private static void OnChanged(object source, FileSystemEventArgs e)
   {
      Console.WriteLine("文件改变事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
   }
   
   private static void OnDeleted(object source, FileSystemEventArgs e)
   {
      Console.WriteLine("文件删除事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
   }
   
   private static void OnRenamed(object source, RenamedEventArgs e)
   {
      Console.WriteLine("文件重命名事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
   }
}

//来源:C/S框架网(www.csframework.com) QQ:23404761





贴图图片
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:SQL2008多个查询条件分页查询脚本(原创)
下一篇:C# WebAPI开发平台与C# WebAPI开发框架
评论列表

发表评论

评论内容
昵称:
关联文章

C#监控文件夹FileSystemWatcher
FileSystemWatcher监控文件的更改状态并且实时备份文件
无线监控系统之二-------C#实现
C#监控CD-ROM插入/弹出光盘(CDROM_Listener)
[原创]无线监控系统之二-------C#实现(续)
读取一个文件夹下所有的txt文件,并保存到一个txt文本中
MES - 煤矿智能化综合防尘监测监控系统平台
WinFramework轻量级开发框架 - 煤矿智能化综合防尘监测监控系统平台
IE浏览器监控程序-监控IE窗体URL动态加载网页等信息
无线监控系统之四-------结言
无线监控系统之一-------UML设计
无线监控系统之三-------测试与扩展
软件开发与设计 - MIS-管理信息系统(监控类数据库设计)
软件开发与设计 - MIS-管理信息系统--地下水监控管理信息系统
软件开发与设计 - MIS-管理信息系统-财政资金监控管理系统
VSCode配置C#运行环境教程,vscode配置c#
C# 读取资源文件 GetManifestResourceStream
C# .NET 入门概念与知识点总结
C#调用C++编译的DLL详解
C# 搭建一个简单的WebApi项目,c# webapi

热门标签
软件著作权登记证书 .NET .NET Reactor .NET5 .NET6 .NET7 .NET8 .NET9 .NETFramework AI编程 APP AspNetCore AuthV3 Auth-软件授权注册系统 Axios B/S B/S开发框架 B/S框架 BSFramework Bug Bug记录 C#加密解密 C#源码 C/S CHATGPT CMS系统 CodeGenerator CSFramework.DB CSFramework.EF CSFramework.License CSFrameworkV1学习版 CSFrameworkV2标准版 CSFrameworkV3高级版 CSFrameworkV4企业版 CSFrameworkV5旗舰版 CSFrameworkV6.0 CSFrameworkV6.1 CSFrameworkV6旗舰版 DAL数据访问层 DaMeng Database datalock DbFramework DeepSeek Demo教学 Demo实例 Demo下载 DevExpress教程 Docker Desktop DOM ECS服务器 EFCore EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR HR考勤系统 IDatabase IIS JavaScript LINQ MES MiniFramework MIS MSSQL MySql NavBarControl NETCore Node.JS NPM OMS Oracle资料 ORM PaaS POS PostgreSql Promise API PSD QMS RedGet Redis RSA SAP Schema SEO SEO文章 SQL SQLConnector SQLite SqlServer Swagger TMS系统 Token令牌 VS2022 VSCode VS升级 VUE WCF WebApi WebApi NETCore WebApi框架 WEB开发框架 Windows服务 Winform 开发框架 Winform 开发平台 WinFramework Workflow工作流 Workflow流程引擎 XtraReport 安装环境 版本区别 报表 备份还原 踩坑日记 操作手册 成本核算系统 达梦数据库 代码生成器 电子线材ERP 迭代开发记录 功能介绍 官方软件下载 国际化 海康威视考勤 基础资料窗体 架构设计 角色权限 开发sce 开发工具 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 框架升级 毛衫行业ERP 秘钥 密钥 企业网络维护 权限设计 软件报价 软件测试报告 软件加壳 软件简介 软件开发框架 软件开发平台 软件开发文档 软件授权 软件授权注册系统 软件体系架构 软件下载 软件著作权登记证书 软著证书 三层架构 设计模式 生成代码 实用小技巧 视频下载 收钱音箱 数据锁 数据同步 塑木地板行业ERP 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 线联ERP 详细设计说明书 新功能 信创 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序
联系我们
联系电话:13923396219(微信同号)
电子邮箱:23404761@qq.com
站长微信二维码
微信二维码