c# - 文件观察者可以读取放置在观察路径上的文件夹的内容吗?
问题描述
我有一个 Windows 服务可以监视我的 PC 上的路径。我的挑战是我遇到了服务问题,不得不停止它并修复它。现在,监视路径上的子目录中有新文件,因为服务没有运行,所以没有处理。我希望能够从路径中剪切文件夹并粘贴它,然后我的服务应该检测到该文件夹,这部分工作正常,但它不会继续并读取文件夹内的文件。
以下是文件观察器的设置方式
fileSystemWatcher1.Path = filePath;
fileSystemWatcher1.EnableRaisingEvents = true;
fileSystemWatcher1.IncludeSubdirectories = true;
fileSystemWatcher1.InternalBufferSize = fsWatcherBuffer;
fileSystemWatcher1.Created += new
FileSystemEventHandler(fileSystemWatcher1_Created);
fileSystemWatcher1.Changed += new
FileSystemEventHandler(fileSystemWatcher1_Changed);
解决方案
我用我的 Windows 10 操作系统做了一些实验,似乎移动子文件夹只会Created
为移动的目录引发一个事件,但复制粘贴子文件夹会引发子文件夹及其所有内容的事件Created
(深度)。Changed
我的观察结果与文档不符:
操作系统和 FileSystemWatcher 对象将剪切和粘贴操作或移动操作解释为文件夹及其内容的重命名操作。如果您将包含文件的文件夹剪切并粘贴到正在监视的文件夹中,则 FileSystemWatcher 对象仅将文件夹报告为新文件夹,而不报告其内容,因为它们实际上只是被重命名。
要通知文件夹的内容已被移动或复制到监视文件夹中,请提供 OnChanged 和 OnRenamed 事件处理程序方法
也从这里:
如果在您正在监视的目录的子树中创建了一个目录,并且 IncludeSubdirectories 为 true,则该目录将自动被监视。
推荐阅读
- ios - 在 UITableview 内的自动调整大小的标签上设置非常长的文本会破坏 NSLayoutConstraint
- node.js - 为什么 node.js 对话流示例代码将输出上下文复制到输入上下文?
- html - 在容器中定位内容
- java - 是否可以将自己的密钥放入 AndroidKeyStore?
- r - R代码-随机森林回归-变量重要性分析-显着性检验
- reactjs - React/Material-UI:如何将 FloatingActionButton 附加到 AppBar?
- excel - VBA 宏或函数可以通过 Windows 命令调用或执行吗?
- arrays - 检测数组中重复值的最快方法?(VBA)
- vhdl - 如何使输入数据大小可变的 CRC 生成器函数
- datetime - Dart / Flutter 默认日期格式