librería - C++ multiplataforma zlib simplifer-wrapper
zlib tool (7)
En el archivo fuente zlib, hay una contribución llamada "minizip".
"minizip" es un conjunto de archivos que puede usar para jugar con archivos .zip. Los servicios básicos que necesita ya están allí:
- unzOpen
- unzLocateFile
- unzOpenCurrentFile
- unzGetCurrentFileInfo
- unzCloseCurrentFile
- unzClose
Por supuesto, esto no está orientado a objetos (y estoy seguro de que ese no era el objetivo del creador de minizip), pero escribir un contenedor orientado a objetos simple debería ser fácil.
Estoy buscando un contenedor que destila zlib para:
- OpenZipFile ()
- GetItemInfo (n)
- UnzipItem (n) // Puntos de bonificación por descomprimir recursivamente si el elemento n es un directorio.
Veo muchas envolturas alrededor de la biblioteca zlib en, por ejemplo, codeproject.com, pero todas son específicas de la plataforma para proporcionar la funcionalidad adicional específica de la plataforma de descomprimir en buffer / buffer de archivo / memoria.
Podría tratar de obtener el código de otro proyecto de FOSS. ScummVM, por ejemplo, tiene un envoltorio Zlib altamente portátil ( implementación , cabecera ) con todas las funciones que necesita, más una capa OO para interactuar genéricamente con cualquier otro tipo de archivo.
Tal vez ese es un buen punto de partida? Las funciones de envoltura son totalmente independientes y portátiles (diablos, incluso funcionan en una Nintendo DS), pero la capa OO depende de muchas clases personalizadas que pueden ser difíciles de agregar a su propio proyecto.
El zlib fácil de firstobject se mantiene multiplataforma; tiene zlib en un solo archivo easyzlib.c y expone solo las funciones ezcompress y ezuncompress con la función adicional de determinar los requisitos de memoria antes de asignar el tamaño exacto.
En boost :: iostreams existe la posibilidad de utilizar los formatos zlib, gzip y bzip2.
Lo encuentras en http://www.boost.org/
GZStream vale la pena mirar. Esta es una bonita envoltura de plataforma cruzada alrededor de ZLib que extiende las clases STL iostream.
http://www.cs.unc.edu/Research/compgeom/gzstream/
Lo bueno de este envoltorio sobre algunos de los otros es que si trabajas con archivos muy grandes no necesitas cargar todo el conjunto de datos en la memoria.
Si va a utilizar minizip, preste atención, la versión que se envía con zlib 1.2.3 tiene una limitación de archivo zip resultante de 2 GB. IT producirá zip con tamaño> 2GB, pero no podrá abrirlos ...
Este es un hilo viejo, pero pensé que lanzaría en el contenedor ZLib de Boost:
http://www.boost.org/doc/libs/1_47_0/libs/iostreams/doc/classes/zlib.html