Logo

FileSystemWatcher

photo

2023年10月22日


前言

FileSystemWatcher学习总结


一、FileSystemWatcher常用属性

FileSystemWatcher常用于监视文件系统的变更,当文件系统中的文件或者文件夹被修改会自动触发相应的回调事件。
1、常用事件

Changed: 当文件或者文件夹已经完成修改时触发此事件
Created:当文件或者文件夹已经成功创建触发此事件
Deleted:当文件或者文件夹已经成功删除触发此事件
Error:当变更的过程中发生错误触发此事件。
Renamed:当文件或者文件夹已经成功被重命名时触发此事件

2、常用基本属性

(1) Path :设置要监视的目录的路径。
(2) IncludeSubdirectories :设置是否级联监视指定路径中的子目录。
(3) Filter :设置筛选字符串,用于确定在目录中监视哪些类型的文件。
(4) NotifyFilter :设置文件的哪些属性的变动会触发 Changed事件,同时监控多个属性变动可以按“或”组合。(默认值为 NotifyFilter.LastWrite | NotifyFilter.FileName | NotifyFilter.DirectoryName 组合)
子项:

  • Attributes – 文件或文件夹的属性。
  • CreationTime – 文件或文件夹的创建时间。
  • DirectoryName – 目录名。(常用)
  • FileName – 文件名。 (常用)
  • LastAccess – 文件或文件夹上一次打开的日期。
  • LastWrite – 上一次向文件或文件夹写入内容的日期。
  • Security – 文件或文件夹的安全设置。
  • Size – 文件或文件夹的大小。 (常用)

(5) EnableRaisingEvents :设置是否开始监控。(默认为false)

二、一个简单的 file 监视程序

1.引用

代码如下(示例):

    static void Main(string[] args)
    {
      	string path = @"D:\Data";
      	MonitorDirectory(path,"*.*");
      	Console.ReadKey();
      	Console.WriteLine("按q退出!");
        while (Console.Read() != 'q') ;
    }

2.创建函数

代码如下(示例):

    private static void MonitorDirectory(string path, string filter)
    {
      FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
      fileSystemWatcher.Path = path;
      fileSystemWatcher.NotifyFilter = NotifyFilters.LastAccess 
                                     | NotifyFilters.LastWrite 
      								 | NotifyFilters.FileName 		   
      								 |NotifyFilters.DirectoryName;
       //文件类型,支持通配符,“*.txt”只监视文本文件
      fileSystemWatcher.Filter = filter;    // 监控的文件格式
      watch.IncludeSubdirectories = true;  // 监控子目录
      fileSystemWatcher.Changed += new FileSystemEventHandler(OnProcess);
      fileSystemWatcher.Created += new FileSystemEventHandler(OnProcess);
      fileSystemWatcher.Renamed += new RenamedEventHandler(OnRenamed);
      fileSystemWatcher.Deleted += new FileSystemEventHandler(OnProcess);
      //表示当前的路径正式开始被监控,一旦监控的路径出现变更,FileSystemWatcher 中的指定事件将会被触发。
      fileSystemWatcher.EnableRaisingEvents = 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("File created: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
    }

    private static void OnChanged(object source, FileSystemEventArgs e)
    {
      Console.WriteLine("File changed: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
    }

    private static void OnDeleted(object source, FileSystemEventArgs e)
    {
      Console.WriteLine("File deleted: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
    }

	private static void OnRenamed(object source, FileSystemEventArgs e)
    {
      Console.WriteLine("File renamed: {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
    }



总结

  1. 重命名会触发两个事件,Renamed和Changed。
  2. https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?redirectedfrom=MSDN&view=netframework-4.8

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

这篇文章是接着【三分钟快速搭建Vue3+webpack项目】的内容做的开发,有基础的可以跳过【三分...Vue3的vue-router路由详解

热门文章

西游记之大圣归来 《西游记之大圣归来》是根据中国传统神话故事《西游记》进行拓展和演绎的3D动画电影。由横店影视、天空之城、燕城十月与微影时代作为出品方,高路动画、恭梓兄弟、世纪长龙、山东影视、东台龙行盛世、淮安西游产业与永康壹禾作为联合出品方出品,田晓鹏执导,张磊、林子杰、刘九容和童自荣等联袂配音。影片讲述了已于五行山下寂寞沉潜五百年的孙悟空被儿时的唐僧——俗名江流儿的小和尚误打误撞地解除了封印,在相互陪伴的冒险之旅中找回初心,完成自我救赎的故事。 作者:Pastore Antonio
1448 浏览量
常用的Centos操作Shell命令 玩WordPress的时候经常会接触到一些常用的命令,老是忘记……人年纪大了就是不给力啊。浏览量:...常用的Centos操作Shell命令 作者:Pastore Antonio
1387 浏览量
ffmpeg+srs 实现直播流 这篇文章是我在做直播流的时候收集的所有素材,没有太多的整理,都放到了脑袋里面了,之后有时间了再整理成...ffmpeg+srs实现直播流 作者:Pastore Antonio
1387 浏览量
项目十大管理和五大过程 PMBOK五大过程组是什么?PMBOK五大过程组是:启动过程、规划过程、执行过程、监...项目十大管理和五大过程 作者:Pastore Antonio
1363 浏览量
[ Office 365 开发系列 ] 身份认证 前言本文完全原创,转载请说明出处,希望对大家有用。通常我们在开发一个应用时,需要考虑用户身份认证...[Office365开发系列]身份认证 作者:Pastore Antonio
1357 浏览量