文件和文件夹不存在的时候,FileSystemWatcher 监听不到文件的改变?如果递归地监听就可以了


当你需要监视文件或文件夹的改变的时候,使用 FileSystemWatcher 便可以完成。不过,FileSystemWatcher 对文件夹的监视要求文件夹必须存在,否则会产生错误“无效路径”。

那么,如果文件或文件夹不存在的时候可以怎么监视文件的改变呢?更麻烦的是如果顶层很多级文件夹都不存在,怎么能监视呢?本文将告诉你方法。

本文的代码适用于 .NET Framework 和 .NET Core,同时不需要任何第三方依赖。


本文内容

      • 方法一:创建文件夹(在逃避问题,但也不失为一种解决思路)
      • 方法二:递归监视文件夹
        • 代码实现
        • 完整的代码和使用方法
        • 此方法的特点,优势和不足
        • 附所有源码
        • 参考资料

FileWatcher that helps you to watch a single file change even if the file or it’s owner folders does not exists.。

使用方法与 FileSystemWatcher 类似,但是更简单:

_watcher = new FileWatcher(@"C:\Users\walterlv\Desktop\demo.txt");
_watcher.Changed += OnFileChanged;
_watcher.Watch();
private void OnFileChanged(object sender, EventArgs e)
{
    // 最纯粹的文件改变事件,仅在文件的内容真的改变的时候触发。
}

FileWatcher that helps you to watch a single file change even if the file or it’s owner folers does not exists.。


FileSystemWatcher Class (System.IO) - Microsoft Docs
  • c# - How can i use FileSystemWatcher to watch directory if directory not exist? - Stack Overflow
  • FileSystemWatcher - Pure Chaos (Part 1 of 2) - CodeProject
  • FileSystemWatcher - Pure Chaos (Part 2 of 2) - CodeProject
  • Recursive Directory Watch - CodeProject
  • How does Read File watch for changes? - Grasshopper
  • c# - Reading file after writing it - Stack Overflow

  • 我的博客会首发于 https://walterlv.com/,而 CSDN 和博客园仅从其中摘选发布,而且一旦发布了就不再更新。

    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://blog.csdn.net/wpwalter),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。