如何以编程方式找到两个目录之间的区别

Dan*_*ane 4 windows delphi delphi-2007

首先; 我不一定在寻找Delphi代码,以任何你想要的方式吐出来.

我一直在寻找(特别是在这里)并找到一些关于人们寻找比较目录(包括子目录)的方法,尽管他们使用逐字节方法.第二个,我不是在寻找一个difftool,我"只是"寻找一种方法来查找不匹配的文件,同样重要的是,在一个目录中但不在另一个目录中的文件,反之亦然.

更具体一点:我有一个目录(备份文件夹),我不断使用FindFirstChangeNotification更新.虽然我第一次需要复制所有文件,但我还需要在应用程序启动时检查备份目录(如果在应用程序未运行时发生了某些事情或者FindFirstChangeNotification没有捕获文件更改).为了解决这个问题,我正在考虑为备份文件创建CRC列表,然后运行原始目录,为每个文件计算CRC,最后比较两个CRC.然后以某种方式查找一个目录而不是另一个目录中的文件(再次;反之亦然).

这是一个问题:这是最快的方式吗?如果是这样,那么(大致)如何完成工作?

Bli*_*ndy 5

您不一定需要每个文件的CRC,您可以比较每个文件的"最后修改"日期,以用于大多数正常目的.它的速度更快.如果您需要额外的安全性,还可以比较长度.您可以使用查找功能免费获得这两个指标.

在您的更改通知中,您可能应该将文件添加到队列并使用计时器对象每隔约30秒或其他时间复制新排队的文件,这样您就不会频繁更新/检查系统.

要获得更高的速度,请尽可能使用Win32函数,避免使用任何Delphi查找/复制/ getfileinfo函数.我不熟悉Delphi框架,但是例如C#的东西比Win32函数更慢.

  • 无需担心最后一点.Delphi的"框架"是包装Windows API的本机代码,并且往往比.NET等价物快得多. (4认同)