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
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
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.