我想获取独立于外部属性(如路径和文件名)的文件哈希值(主要是视频文件)。我将需要在数据库中存储哈希并比较文件哈希以找到相同的文件。
答案 0 :(得分:5)
查看DigestInputStream
课程:http://docs.oracle.com/javase/7/docs/api/java/security/DigestInputStream.html
答案 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)
根据您的需要,您可以使用Guava的Files和ByteStreams类轻松完成此操作:
byte[] digest = Files.getDigest(file, MessageDigest.getInstance("SHA"));