0

我有一些将文件移动到同一目录的代码。什么是一个好的策略:

  • 检测文件是否与目录中现有文件的副本?这是为了决定是删除源还是简单地保留它。
  • 如果已存在同名但内容不同的目标文件,是否重命名源文件?
4

3 回答 3

2

检测重复文件?

大多数编程语言都有一个类似于FileExists获取文件名并返回布尔值的函数,该布尔值指示文件系统上是否存在具有给定名称的文件。

处理名称相同但内容不同的文件?

计算两个文件的SHA1校验和并比较这些哈希值。再一次,大多数语言都有一个 sha1 函数,它接受一个表示文件内容的字节数组并返回一个表示 SHA1 哈希的字节数组。

于 2010-12-18T16:48:45.867 回答
1

好吧,一个简单的方法是进行循环冗余检查。有几种语言为此实现了功能。您还可以计算文件的 md5 总和。不过,这不是 100% 可靠的。

如果您需要检查它们是否相同,则需要打开两个文件的流,并逐字节比较它们。

检查重复文件名是显而易见的,比较它们。

编辑:如果您有很多文件,请比较文件大小。如果不匹配,则它们不能相等。

于 2010-12-18T16:50:34.877 回答
1

如果您不需要原始文件名,作为一种方便的方法,只需计算文件“内容”的 MD5 或 SHA1 哈希并将文件重命名为它。:-)

于 2010-12-18T17:16:34.467 回答