计算每个文件的MD5 hash并将其存储在一个HashMap中,其中MD5哈希为键,文件路径为值。当您将新文件添加到HashMap中时,您可以轻松检查是否已有包含该MD5哈希的文件。
错误匹配的机会非常小,但是如果您希望可以使用FileUtils.contentEquals来确认匹配。
e.g:
void findMatchingFiles(List<String> filepaths)
{
HashMap<String, String> hashmap = new HashMap<String, String>();
for(String filepath in filepaths)
{
String md5 = getFileMD5(filepath); // see linked answer
if(hashmap.containsKey(md5))
{
String original = hashmap.get(md5);
String duplicate = filepath;
// found a match between original and duplicate
}
else
{
hashmap.put(md5, filepath);
}
}
}
如果有多个相同的文件,这将找到的第一个匹配他们每个人,但不匹配所有的人的彼此。如果你想要后者,你可以将MD5字符串中的散列存储到文件路径列表中,而不是仅仅存储到第一个文件路径中。
您是否尝试过计算文件的校验和而不是读取它们? – Prashant
我直接使用FileUtils.contentEquals方法来检查文件以查找并存储结果。 – Mostafizur
@Prashant你能给我写一个示例代码吗? – Mostafizur