• C# 文件监听FileSystemWatcher


    用处

    当文件修改后,触发其他操作,例如删除另一个文件夹下的文件等

    代码

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Diagnostics;
    4. using System.IO;
    5. namespace ConsoleApp6FileSystemWatcher
    6. {
    7. internal class Program
    8. {
    9. static void Main(string[] args)
    10. {
    11. string path = @"C:\Users\admin\Desktop\测试文件夹";
    12. MonitorDirectory(path, "*.*");
    13. Console.ReadKey();
    14. Console.WriteLine("按q退出!");
    15. while (Console.Read() != 'q') ;
    16. }
    17. private static void runProgress(string exename, string para)
    18. {
    19. Process p = new Process();
    20. p.StartInfo.FileName = exename;
    21. p.StartInfo.UseShellExecute = false;
    22. p.StartInfo.RedirectStandardInput = true;
    23. p.StartInfo.RedirectStandardError = true;
    24. p.StartInfo.CreateNoWindow = true;
    25. p.Start();
    26. p.StandardInput.WriteLine(para); //向cmd窗口发送输入信息
    27. p.StandardInput.WriteLine("exit");//要退出
    28. p.StandardInput.AutoFlush = true; //提交
    29. p.WaitForExit();
    30. //p.Close();
    31. }
    32. private static void MonitorDirectory(string path, string filter)
    33. {
    34. FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
    35. //设置要监视的目录的路径。
    36. fileSystemWatcher.Path = path;
    37. //设置文件的哪些属性的变动会触发 Changed事件,同时监控多个属性变动可以按“或”组合。
    38. //Attributes – 文件或文件夹的属性。
    39. //CreationTime – 文件或文件夹的创建时间。
    40. //DirectoryName – 目录名。(常用)
    41. //FileName – 文件名。 (常用)
    42. //LastAccess – 文件或文件夹上一次打开的日期。
    43. //LastWrite – 上一次向文件或文件夹写入内容的日期。
    44. //Security – 文件或文件夹的安全设置。
    45. //Size – 文件或文件夹的大小。 (常用)
    46. fileSystemWatcher.NotifyFilter = NotifyFilters.LastAccess
    47. | NotifyFilters.LastWrite
    48. | NotifyFilters.FileName
    49. | NotifyFilters.DirectoryName;
    50. //文件类型,支持通配符,“*.txt”只监视文本文件
    51. fileSystemWatcher.Filter = filter; // 监控的文件格式
    52. fileSystemWatcher.IncludeSubdirectories = true; // 监控子目录
    53. //Changed: 当文件或者文件夹已经完成修改时触发此事件
    54. //Created:当文件或者文件夹已经成功创建触发此事件
    55. //Deleted:当文件或者文件夹已经成功删除触发此事件
    56. //Error:当变更的过程中发生错误触发此事件。
    57. //Renamed:当文件或者文件夹已经成功被重命名时触发此事件
    58. fileSystemWatcher.Changed += new FileSystemEventHandler(OnChanged);
    59. fileSystemWatcher.Created += new FileSystemEventHandler(OnCreated);
    60. fileSystemWatcher.Renamed += new RenamedEventHandler(OnRenamed);
    61. fileSystemWatcher.Deleted += new FileSystemEventHandler(OnDeleted);
    62. //表示当前的路径正式开始被监控,一旦监控的路径出现变更,FileSystemWatcher 中的指定事件将会被触发。
    63. fileSystemWatcher.EnableRaisingEvents = true;
    64. }
    65. private static void OnCreated(object source, FileSystemEventArgs e)
    66. {
    67. Console.WriteLine("检测到文件创建");
    68. Console.WriteLine("文件操作类型"+ e.ChangeType);
    69. Console.WriteLine("文件路径" + e.FullPath);
    70. Console.WriteLine("文件名称" + e.Name);
    71. }
    72. private static void OnChanged(object source, FileSystemEventArgs e)
    73. {
    74. Console.WriteLine("检测到文件修改");
    75. Console.WriteLine("文件操作类型" + e.ChangeType);
    76. Console.WriteLine("文件路径" + e.FullPath);
    77. Console.WriteLine("文件名称" + e.Name);
    78. }
    79. private static void OnDeleted(object source, FileSystemEventArgs e)
    80. {
    81. Console.WriteLine("检测到文件删除");
    82. Console.WriteLine("文件操作类型" + e.ChangeType);
    83. Console.WriteLine("文件路径" + e.FullPath);
    84. Console.WriteLine("文件名称" + e.Name);
    85. }
    86. private static void OnRenamed(object source, FileSystemEventArgs e)
    87. {
    88. Console.WriteLine("检测到文件重命名");
    89. Console.WriteLine("文件操作类型" + e.ChangeType);
    90. Console.WriteLine("文件路径" + e.FullPath);
    91. Console.WriteLine("文件名称" + e.Name);
    92. }
    93. }
    94. }

    结果

    参考文献

    FileSystemWatcher_C#学习的博客-CSDN博客

    C# 获取文件名、目录、后缀、无后缀文件名、扩展名_c# 从路径获取文件名_hquu的博客-CSDN博客

  • 相关阅读:
    02 kafka 记录的获取
    电通东派:联想Filez让业务流程上云端
    物联网开发笔记(2)- 使用Wokwi仿真树莓派Pico点亮LED灯代码分析
    PMP认证需具备哪些条件啊?费用多少啊?
    小程序AI智能名片S2B2C商城系统:四大主流商业模式深度解析与实战案例分享
    如何快速生成项目目录结构树?
    PBN衔接ILS时中间进近航段的保护区绘制方法
    数据结构——排序算法——归并排序
    安卓程序逆向与防护
    猿创征文|【Linux Debug】有了core-dump,Bug一举拿下!
  • 原文地址:https://blog.csdn.net/qq_39397927/article/details/133741240