我希望能够获取文件的哈希值(大多数是视频文件),而不受路径和文件名等外部属性的影响。我需要将哈希值存储在数据库中,并比较文件哈希以查找相同的文件。
DigestInputStream
类:http://docs.oracle.com/javase/7/docs/api/java/security/DigestInputStream.html。它是与输入流一起使用的安全散列算法实现,通过计算数据的哈希值来验证数据完整性。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
}
}
byte[] digest = Files.getDigest(file, MessageDigest.getInstance("SHA"));