Раньше я думал, что могу использовать контрольную сумму (MD5 или CRC32) для улучшения метода загрузки.То есть, если контрольная сумма файлов одинакова, я думаю, что это тот же файл.Но однажды я увидел код в org.apache.commons.io.FileUtils
, который содержит два метода contentEquals
и contentEqualsIgnoreEOL
.Есть два способа проверить один и тот же файл.
if (file1.getCanonicalFile().equals(file2.getCanonicalFile())) {
// same file
return true;
}
и
IOUtils.contentEquals(new FileInputStream(f1), new FileInputStream(f2));
Вот что меня смутило.
- Я не могу насытитьсяинформация о
canonical
.Что это значит? - он использует поток ввода-вывода для проверки файла вместо контрольной суммы.
Итак, в какой ситуации я должен использовать байты или контрольные суммы для проверки того же файла.