Основное отличие состоит в том, что функция gzwrite инициирует zlib с опцией SYNC_FLUSH, которая добавит вывод к 4-байтовой границе (или это 2), а затем немного дополнительно (0x00 0x00 0xff 0xff 0x03).
Если вы используете их для создания Zip-файлов, помните, что утилита Mac Archive по умолчанию НЕ принимает этот формат.
Из того, что я могу сказать, SYNC_FLUSH - это опция gzip, и она не разрешена в формате PKZip / Info-ZIP, все .zip файлы и их производные получены из.
Если вы удалите небольшой файл / текст, в результате чего получите один блок deflate, и сравните его с тем же текстом, написанным с помощью gzwrite, вы увидите 2 различия, один из байтов в заголовке блока deflate отличается на 1, и конец дополняется вышеуказанными байтами. Если результат больше, чем один дефляционный блок, различия начинают накапливаться. Это трудно исправить, так как заголовки блоков потока дефлирования даже не выровнены в байтах. Есть причина, по которой все используют zlib. Мало кто достаточно смел, чтобы даже попытаться переписать этот формат!