zlib: размер распакованного файла? - PullRequest
1 голос
/ 21 июня 2010

Я использую zlib для распаковки файла. Я хочу убедиться, что на диске достаточно места для распаковки файла. Предоставляют ли zip-формат и zlib средства для определения распакованного размера его содержимого?

Ответы [ 2 ]

0 голосов
/ 31 октября 2015

Если ваш файл был сжат с использованием формата gzip (RFC1952), то последние 4 байта в поле ISIZE указывают размер несжатого файла mod 2 ^ 32. Следовательно, при условии, что исходный файл был меньше 4 ГБ, вы можете определить его размер, прочитав последние 4 байта. Проверьте man-страницы для gunzip.

Если использовался формат ZLIB или raw Deflate, сначала вам нужно будет распаковать его, чтобы определить размер без сжатия.

0 голосов
/ 15 февраля 2011

Просто создайте простую файловую структуру для сжатия:

{
FileFormatHeader (optional) x bytes
OriginalSize (4 or 8 bytes)
CompressedSize (optional) (4 or 8 bytes)
HashSum (optional) (16 bytes or different number [depends on hash algorithm])

CompressedData
}

Теперь у вас есть вся информация, необходимая для распаковки

...