如何确定目录/文件夹是否已更改

时间:2012-10-11 14:04:28

标签: c# directory subdirectory

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

Parent/
    Child1/
        GrandChild1/
             File1.txt

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

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

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

我不想使用FileSystemWatcher,因为我将其作为预定作业运行而不是观看它。

3 个答案:

答案 0 :(得分:4)

用户FileSystemWatcher。请记住启用引发事件,因为这是一个常见的错误(watchfolder.EnableRaisingEvents = true;)。

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

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

参考:

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您可以使用FileSystemWatcher类。

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

这是Windows Task Schedular API

的链接