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

时间:2011-04-29 15:45:10

标签: java mysql hash

我想获取独立于外部属性(如路径和文件名)的文件哈希值(主要是视频文件)。我将需要在数据库中存储哈希并比较文件哈希以找到相同的文件。

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分: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
  }
}

答案 2 :(得分:1)

根据您的需要,您可以使用GuavaFilesByteStreams类轻松完成此操作:

byte[] digest = Files.getDigest(file, MessageDigest.getInstance("SHA"));