Я использовал код в этом обсуждении стекопотока , чтобы вычислить контрольную сумму файла в Java.
Я немного озадачен этой работой. Я применяю это в своей задаче следующим образом:
У меня есть файл с некоторыми данными. Я рассчитал размер текста в файле, используя
System.out.println(file1content.toString().getBytes().length); the o/p is 4096 bytes
Когда я пытаюсь выполнить код контрольной суммы, я понимаю, что число считываемых байтов составляет 4096 + 12 байтов, равны ли эти 12 байтов имени файла?
У меня есть другой файл2 с тем же содержимым, что и файл1 (я знаю это точно, потому что я извлекаю текст в строку и сравниваю его с String.equals), но сгенерированная контрольная сумма отличается. Мне интересно, почему это происходит?
Я что-то здесь упускаю?
Редактировать 1:
Я читаю данные из файла, используя следующий цикл:
InputStream fis = new FileInputStream(filename);
byte[] buffer = new byte[1024];
do {
numRead = fis.read(buffer);
System.out.println(" "+ numRead);
if (numRead > 0) {
complete.update(buffer, 0, numRead);
}
} while (numRead != -1);
fis.close();
Вывод numread:
1024
1024
1024
1024
12
-1
С уважением,
Бхавья