Java文件哈希用于识别相同的文件

4

我希望能够获取文件的哈希值(大多数是视频文件),而不受路径和文件名等外部属性的影响。我需要将哈希值存储在数据库中,并比较文件哈希以查找相同的文件。


1
你可以让哈希函数依赖于任何你喜欢的东西,包括“外部属性”或不包括。你不理解编写这样一个函数的原因是什么? - DJClayworth
3个回答

5

2
public byte[] digestFile( File f ){
  try {
    MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
    FileInputStream fis = new FileInputStream( f );
    byte[] buffer = new byte[1024];
    int read = -1;
    while ((read = fis.read(buffer)) != -1) {
      messageDigest.digest(buffer, 0, read);
    }
    return messageDigest.digest();
  } catch (VariousExceptions e) {
    //handle
  }
}

1
根据您的需求,您可以使用GuavaFilesByteStreams类轻松完成此操作:
byte[] digest = Files.getDigest(file, MessageDigest.getInstance("SHA"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接