检测文件是否重复,如果没有则重命名

时间:2010-12-18 16:46:23

标签: language-agnostic file-handling

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

  • 检测文件是否与目录中的现有文件重复?这是为了决定是删除源还是只是保留它。
  • 如果已存在具有相同名称但内容不同的目标文件,则重命名源文件?

3 个答案:

答案 0 :(得分:2)

  

检测重复文件?

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

  

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

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

答案 1 :(得分:1)

嗯,一个简单的方法就是做cyclic redundancy check。有几种语言具有实现此功能的功能。您还可以计算文件的md5总和。但这并非100%可靠。

如果你需要检查它们是否是IDENTICAL,你需要打开两个文件的流,并逐字节地比较它们。

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

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

答案 2 :(得分:1)

如果您不需要原始文件名,只需计算文件“content”的MD5或SHA1哈希值,并将文件重命名为它。 : - )