2010-06-21 21 views
1

J'utilise zlib pour décompresser un fichier. Je veux vérifier qu'il y a assez d'espace disque pour décompresser le fichier. Est-ce que le format zip et zlib fournissent des facilités pour déterminer la taille décompressée de son contenu?zlib: Taille de fichier décompressée?

Répondre

0

Il suffit de créer une structure simple de fichier pour la compression:

{
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
}

Maintenant vous avez toutes les informations dont vous avez besoin pour décomprimer

0

Si votre fichier a été compressé en utilisant le format gzip (de RFC1952), puis les 4 derniers octets, le champ iSize indique la taille du fichier non compressé mod 2^32. Par conséquent, à condition que le fichier d'origine était inférieur à 4 Go, vous pouvez déterminer sa taille en lisant les 4 derniers octets. Vérifiez les pages man pour gunzip.

Si le format ZLIB ou Deflate brut a été utilisé, vous devrez d'abord décompresser pour déterminer la taille non compressée.