2011-06-02 5 views
3

J'ai besoin de trouver une bibliothèque qui me permet de facilement obtenir une liste de répertoires de tous les fichiers dans une archive ZIP et me permet d'extraire un fichier donné dans l'archive à la mémoire (un tampon). De préférence, il devrait s'agir d'une bibliothèque de haut niveau car mes exigences ne sont pas très complexes (ce que j'ai mentionné ci-dessus est à peu près tout ce dont j'ai besoin). Auparavant, j'ai essayé PhysFS qui a le comportement dont j'ai besoin (accéder facilement aux fichiers dans une archive), mais c'est inadapté pour d'autres raisons (il y a beaucoup d'archives et PhysFS me demanderait de les monter individuellement, ce qui n'est pas une option). Une autre bibliothèque qui a la fonctionnalité dont j'ai besoin est Chilkat, mais c'est un shareware donc je ne peux pas l'utiliser non plus.C/C++: Facilement décompresser en mémoire

D'autres suggestions?

+0

C ou C++ sont des langues différentes. Choisissez-en un. –

+2

@Tomalak Je suis à l'aise avec les deux. Si vous insistez, je choisirais C++. :) –

Répondre

3

Alors que la compression zlib utilise .zip http://zlib.net, il ne suffit pas pour obtenir un répertoire liste à partir d'un fichier .zip.

Vous avez également besoin d'un code pouvant lire le format de dictionnaire .zip. Découvrez Minizip http://www.winimage.com/zLibDll/minizip.html. Il fournit un code et de simples exécutables de ligne de commande zip/unzip.

éditer 2 Le code est entièrement C (ainsi est Zlib) - la page a des liens vers deux bibliothèques encapsuleur C++ qui semblent être des liens morts.

+0

Je suis en train d'appuyer minizip --- c'est génial. L'API est un peu particulière et il y a quelques bugs mineurs lors de l'écriture de fichiers zip, en particulier quand vous voulez écrire des fichiers avec des paramètres de compression différents, mais c'est plus rapide, plus petit et plus facile à utiliser que libzip. –

+1

Minizip semble être bon. J'ai également trouvé cette enveloppe très simple de Minizip qui m'a aidé à comprendre comment il devrait être utilisé: [http://code.google.com/p/microzip/...1d80da08c](http://code.google.com/ p/microzip/source/parcourir/src/microzip/Unzipper.cpp? r = c18cac3b6126cfd1a08b3e4543801b21d80da08c) –

2

Que diriez-vous de zlib? http://zlib.net/ « Un Massively Spiffy Cependant Délicatement Unobtrusive Compression Library (également gratuit, pour ne pas mentionner les brevets Inutilisé) »

+0

zlib ne supporte pas .zip. Il contient minizip, qui est utilisé pour compresser/décompresser, mais il faut écrire lui-même un wrapper Unix. – Benjamin