DotNetZip, бесплатная библиотека с открытым исходным кодом для обработки архивных файлов на языках .NET, поддерживает метод CheckZip(), который делает то, что вы хотите. По вашему выбору доступны различные уровни уверенности. Базовый уровень просто проверяет согласованность метаданных. Самый полный уровень делает полное извлечение zip-файла в битбакет, чтобы убедиться, что фактические сжатые данные не повреждены.
Update:
Section 4.3.7 of this page говорит, что сжатый размер 4 байта, начиная с байта 18. Вы можете попробовать чтение, что и сравнивая его с размером в файл.
Однако, я думаю, что это в значительной степени бесполезными для проверки, если почтовый файл поврежден по двум причинам:
Некоторые файлы почтового индекса содержат больше байт, чем просто почтовый части. Для примера , self-extracting archives есть исполняемые части они все еще действительны zip.
Файл может быть поврежден без изменения его размера. Итак, я предлагаю , вычисляя CRC
для гарантированного метода проверки на коррупции.
Вы можете использовать проверку CRC32. Но вы должны иметь поврежденные и неповрежденные zip-файлы CRC32. Таким образом, вы можете легко их сравнить. –
Спасибо за ответ ... У меня не будет непревзойденного файла для сравнения ... Мне нужно проверить, поврежден ли какой-либо файл zip или нет – user2316771