【问题标题】:Moving and cut folders INSIDE watched folder C#移动和剪切文件夹 INSIDE 监视的文件夹 C#
【发布时间】:2021-08-01 09:15:27
【问题描述】:

我正在使用 FileSystemWatcher,并且有 2 个案例没有引发事件。 假设我在 C:/temp 上观看, 如果我在监视目录中已经有 2 个包含文件的文件夹,如果我在监视目录中剪切粘贴或将它们移动到另一个文件夹,我不会收到任何事件。 有人知道我可以在这个移动的文件上获取事件的方法吗?

观看目录:

c:/temp
|--test1
|     |--test1.txt
|
|--test2
|     |--test2.txt

如果我将 test2 文件夹移动或剪切粘贴到 test1 中,我不会在 test2.txt 上收到事件。 编辑:我正在使用 FileSystemWatcher 文档中的代码,可以在这里找到: https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=net-5.0 希望你能帮助我,谢谢:)

【问题讨论】:

  • 请分享您的代码
  • @YogeshNaik 我正在运行可以在 docs.link 中找到的代码:docs.microsoft.com/en-us/dotnet/api/…
  • 你启用了watcher.IncludeSubdirectories = true; ?我使用了相同的代码。但它正在跟踪所有的变化
  • 是的,我启用了它,我的问题是当我在监视目录中移动文件夹时。如果我将文件夹从 c:/data 移动到 c:/temp 我会得到所有想要的事件。

标签: c# windows


【解决方案1】:

移动文件夹或文件不会改变它。如果您想跟踪移动,请务必注意 Renamed 事件并适当设置过滤器。

根据文档:

复制和移动文件夹

Event Handler Events Handled Performs
OnChanged Changed, Created, Deleted Report changes in file attributes, created files, and deleted files
OnRenamed Renamed List the old and new paths of renamed files and folders, expanding recursively if needed.

请注意,严格来说,文件系统观察者不会观察 content 的变化——只观察文件系统条目。可以在不更改文件系统条目的情况下更改文件内容,因此请确保它足以供您使用。

【讨论】:

  • 如果我将文件夹从外部移动或剪切粘贴到监视目录中,我可以看到事件。但是当我在监视目录中移动文件夹时,我看不到任何事件。我观看了重命名的活动,但我认为我仍然缺少一些东西。
  • @OrianHindi 当你不提供任何源代码时,试图提供帮助是很棘手的:) 你在使用NotifyFilters.DirectoryName吗?
  • 编辑了问题,我正在使用 filesyswatcher 文档中的代码,链接可以在问题中找到。非常感谢您的帮助!
  • @OrianHindi 我怀疑问题可能出在*.txt 过滤器上。唯一被重命名的是文件夹,而不是其中的文件 - 你会得到一个事件,但它会被过滤掉,因为这是你要求的。
  • 你是对的!现在我在文件夹上得到事件,有没有办法捕捉 txt 文件 init 的事件?还是我需要爬取更改的文件夹并查找 txt 文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 2022-01-01
  • 2019-03-09
  • 1970-01-01
  • 2016-12-24
  • 2012-02-22
相关资源
最近更新 更多