如何判断一个文件夹中的文件是否与另一个文件夹中的文件相同但已重命名

时间:2011-04-15 14:44:51

标签: vb.net visual-studio-2010

我正在编写一个程序来进行备份,它将具有同步功能。它将类似于微软的SyncToy,但它将具有更大的灵活性和“组”备份选项等。

我正在使用VB.Net 2010来编写程序。我需要帮助的问题是当文件的唯一区别是名称时,有效地比较源文件和目标文件。 (使用同步文件夹的“Contribute”方法“)

换句话说,如果我有一个备份文件夹,其中包含来自主源文件夹的一堆备份文件和文件夹,并且我更改了主文件夹中某个文件的名称,但对此没有任何其他操作,怎么能我告诉重命名的文件与目标文件夹中的原始命名文件相同。在这种情况下,我想将目标文件重命名为在主文件夹中给出的新名称,而不是仅仅将重命名的文件复制到备份文件夹,最后不必要地使用不同名称的重复文件。

感谢您的帮助,

拉尔夫·马尔菲

2 个答案:

答案 0 :(得分:1)

这是最智能的同步方法,同步应该分为4个主要步骤1 - 比较目标文件夹和源文件夹中的文件2 - 重命名目标文件夹中的相同文件,并根据相应的子文件夹移动它们到源文件夹(不需要从源文件夹复制它们)3 - 删除仅存在于目标文件夹中的文件,仅存在于源文件夹中的4个副本文件

注意:不需要繁琐的跟踪,不需要巨大的日志文件来记录你在源文件夹中所做的每一个动作,不需要复制不同名称的相同文件,不需要在不同的子文件夹中复制相同的文件,所有现有的同步程序正在这些时间浪费活动

答案是:有许多有效的程序可以检测相同的文件,你可以在新的同步程序中使用开源的程序

答案 1 :(得分:0)

如果要比较两个文件,则必须通过读取它们并比较其内容的哈希值,或者通过逐字节比较来实际比较它们的内容。 (您可以通过首先比较它们的大小来缓解这种情况)