4

我有一个具有以下结构的文件夹

Parent/
    Child1/
        GrandChild1/
             File1.txt

我需要查询父文件夹并找出 Child1 是否已更改。

已更改 = 添加/更新/删除了一个新文件。

Child1 文件夹 DateModified 未更新。发生更改时,仅更新了修改的 GrandChild1 日期。我试图避免转到文件级别来确定 rootparent 是否已更改。因为会有很多文件夹和子文件夹。我只需要知道 Child1 是否已更改。

我不想使用 FileSystemWatcher,因为我将其作为计划作业运行,而不是实时观看。

4

3 回答 3

6

用户文件系统观察者。请记住启用引发事件,因为这是一个常见错误(watchfolder.EnableRaisingEvents = true;)。

从性能的角度来看,FileSystemWatcher 可能被证明不是最佳的。如果这对您来说是个问题,您可以使用计时器实施CRC检查,以检查您感兴趣的文件和文件夹的更改。

本质上,我要做的是为我正在观看的整个文件夹生成一个 CRC32 哈希(并将其保存到变量 A 中),当我决定是时候检查更改时,您只需计算一个新的 CRC32 哈希文件夹(进入变量 B)。然后,您将 A 与 B 进行比较,如果它们不匹配,则说明发生了变化。真的没那么难。

参考:

于 2012-10-11T14:05:46.543 回答
1

您是否尝试过文件系统观察程序?您可以监视本地驱动器是否从给定路径更改,然后在必要时忽略或处理它们更改的事实。

于 2012-10-11T14:06:43.997 回答
1

您可以为此使用FileSystemWatcher类。

或者,如果您希望安排任务运行,例如每周运行,您可能想查看:http ://taskscheduler.codeplex.com/和http://www.emoreau.com/Entries/Articles /2004/08/Interfacing-the-Windows-Task-Scheduler.aspx

这是 Windows 任务计划 API的链接

于 2012-10-11T14:08:23.580 回答