Имея странную проблему - один из моих приложений-аплетов должен читать/записывать gzip-сжатые файлы, которые используются как для Windows, так и для Linux, и я обнаружил, что файлы, которые я генерирую с использованием zlib в Linux, в 2-3 раза больше, чем те, которые я генерирую, используя GZipStream
в Windows. Они отлично читаются на обеих платформах, поэтому я знаю, что сжатие правильное, независимо от того, какая платформа создала файл. Дело в том, что файлы передаются по сети в разное время, и, очевидно, размер файла является проблемой.В чем разница между сжатием gzip zlib и сжатием, используемым GZipStream .NET?
Мой вопрос:
- Кто-нибудь еще сталкивался с такой
- Есть некоторые документально разница между этими двумя? Я знаю, что
GZipStream
не предоставляет способ указать уровень сжатия, как вы можете, с zlib, но я использую максимальное сжатие на стороне zlib. Разве я не должен видеть относительно тот же размер файла, предполагая, что GZipStream написан для использования максимального сжатия?
Для уточнения того, что сжимается, является (по существу) один монолитный файл, используя формат gzip, используя deflateInit2() с Z_BEST_COMPRESSION, Z_DEFLATED, 16 + MAX_WBITS и Z_DEFAULT_STRATEGY. – Will
Вы не можете указать уровень сжатия для GZipStream. Это точно не похоже на то, что вы хотите, если они в 3 раза меньше :) –
Точно ... проблема на стороне Linux. Некоторое время ломал голову над этим, и, наконец, решил бросить это на SO гуру и посмотреть, есть ли у них какие-либо идеи. – Will