Как отладить алгоритм генератора .zip? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь реализовать минимальную версию файла .zip, следуя этой спецификации: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

На самом деле мне не нужно сжатие, мне просто нужен способ связать кучу файловв единый широко распространенный формат архива с возможностью потоковой передачи данных файла во время потоковой передачи zip.

Пока что я частично успешен, 7-zip и окна, встроенные в Zip Extractor, могут извлекать их очень хорошо, WinRar и макросы, встроенные в Zip Extractor, дают мне поврежденные ошибки архива.

Я не могу на всю жизнь найти реальную проблему (ы?), Хотя, насколько я могу судить, .zips построены на 100% к спецификации, но спецификация - это большая стена текстаи со скачками изменений от одной версии файла почтового индекса к другой наряду с унаследованными атрибутами, принимающими новые функции, это немного запутывает.

Кто-нибудь знает инструмент извлечения, который может дать мне более конкретные ошибки, чем просто "архив поврежден"?

Или, может быть, утилита генерации zip, где я могу выбирать между различными способами создания zip-файла, чтобы я мог идти и сравнивать результаты побайтно?

1 Ответ

0 голосов
/ 23 января 2019

Кто-нибудь знает инструмент извлечения, который может выдавать мне более конкретные ошибки, чем просто "архив поврежден"?

Инструмент unzipada @ Проект Zip-Ada сделает именно это

Testing archive ko.zip

raised ZIP.ARCHIVE_CORRUPTED : Bad (or no) end-of-central-directory
[C:\Ada\za\unzipada.exe]
Zip.Find_First_Offset at zip.adb:589
Unzip.Extract at unzip.adb:667
Unzipada at unzipada.adb:259

Просматривая код (например, zip.adb, строка 589), вы можете сузить проблемы с поврежденным архивом. Для сборки инструмента загрузите исходники и следуйте файлу readme.txt. Есть также готовые двоичные файлы для Windows.

...