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

问题描述:

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

+1

可以使一个散列函数取决于你喜欢的任何东西,包括'外部属性'或不。写这样一个你不明白的函数是什么? – DJClayworth 2011-04-29 15:47:47

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 
    } 
} 

取决于你需要什么,你可以做到这一点很容易地使用GuavaFilesByteStreams类:

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