У меня есть требование «проверить целостность» содержимого файлов. Файлы будут записаны на CD / DVD, который может быть скопирован много раз. Идея состоит в том, чтобы идентифицировать копии (после того, как они были удалены из Nero и т. д.), которые скопированы правильно.
Я новичок в этом, но быстрый поиск подсказывает, что Arrays.hashCode (byte [ ])
будет соответствовать потребностям.Мы можем включить файл на диск, который содержит результат этого вызова для каждого интересующего ресурса, а затем сравнить его с байтом []
из Файл
прочитан с диска при проверке.
Правильно ли я понимаю метод, действительный ли это способ проверки содержимого файла?
Если нет, предложения по ключевым словам или стратегиям / методам / классам поиска были бы признательны.
Рабочий код основан на ответе Брендана. Он решает проблему, выявленную VoidStar (требуется хранить весь байт []
в m Эмори за хэш).
import java.io.File;
import java.io.FileInputStream;
import java.util.zip.CRC32;
class TestHash {
public static void main(String[] args) throws Exception {
File f = new File("TestHash.java");
FileInputStream fis = new FileInputStream(f);
CRC32 crcMaker = new CRC32();
byte[] buffer = new byte[65536];
int bytesRead;
while((bytesRead = fis.read(buffer)) != -1) {
crcMaker.update(buffer, 0, bytesRead);
}
long crc = crcMaker.getValue(); // This is your error checking code
System.out.println("CRC code is " + crc);
}
}