У меня есть требование «проверить целостность» содержимого файлов.Файлы будут записаны на CD / DVD, который может быть скопирован много раз.Идея состоит в том, чтобы идентифицировать копии (после их удаления из Nero и т. Д.), Которые были правильно скопированы.
Я довольно новичок в этом, но быстрый поиск показывает, что Arrays.hashCode(byte[])
будет соответствоватьнеобходимость.Мы можем включить на диск файл, содержащий результат этого вызова для каждого интересующего ресурса, а затем сравнить его с byte[]
из File
, считанным с диска при проверке.
Я понимаюметод правильно, это правильный способ проверки содержимого файла?
Если нет, то мы будем благодарны за предложения по поиску ключевых слов или стратегий / методов / классов.
РаботаКод, основанный на ответе Брендана.Он решает проблему, выявленную VoidStar (для хранения хеша требуется всего byte[]
в памяти).
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);
}
}