Хеш файла Java для идентификации идентичных файлов - PullRequest
4 голосов
/ 29 апреля 2011

Я хотел бы получить хэш файлов (в основном видеофайлов) независимо от внешних свойств, таких как путь и имя файла.Мне нужно будет сохранить хеш в базе данных и сравнить хеш файла, чтобы найти идентичные файлы.

Ответы [ 3 ]

5 голосов
/ 29 апреля 2011

Взгляните на класс DigestInputStream: http://docs.oracle.com/javase/7/docs/api/java/security/DigestInputStream.html

2 голосов
/ 29 апреля 2011
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 голос
/ 29 апреля 2011

В зависимости от того, что вам нужно, вы можете сделать это довольно легко, используя Guava Файлы и ByteStreams классы:

byte[] digest = Files.getDigest(file, MessageDigest.getInstance("SHA"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...