Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Como se cargar un ZIP dentro de otro ZIP?

Iniciado por CorEduard, 24 de Noviembre de 2013, 12:19:58 PM

« anterior - próximo »

CorEduard

Hola :)

En este momento estoy desarrollando en el lenguaje C mi propia librería FileSystem para poder hacer uso de archivos de recursos, en otras palabras para empaquetar los archivos multimedia, los scripts, etc...

Para esto estoy utilizando las librería ZLIB y PhysicsFS (https://icculus.org/physfs/)

Pero me encontré con un problema, cuando creo una archivo ZIP para usarlo como un único archivo de recurso y a ese archivo le meto otro archivo ZIP este mismo archivo no puedo abrirlo para poder extraer su contenido.

¿Alguien tiene alguna idea de como puedo arreglar esto o algún código de ejemplo que me pueda ayudar?. Gracias.

[EX3]

No se como funcionara PhysicFS ni recuerdo bien como funcionaba ZLib (llevo más de 5 años sin tocarla) pero para hacer lo que quieres hacer, a cualquier nivel, lo que deberías es poder acceder a todo el contenido del zip dentro del nivel donde estés (un zip dentro de zip dentro de un zip...) y entonces leer su cabecera. En la cabecera tienes toda la información de que archivos contiene y la información de cada uno. No se si PhysicsFS tiene alguna función para cargar ZIPs desde memoria, si es el caso, es tan sencillo con leer todos los bytes que componen el ZIP dentro del tu ZIP y pasárselo a PhysicsFS. De lo contrario, te tocara extraer el ZIP a disco y hacer la carga normal... o hacerte tu propia función para leer la cabecera de archivos ZIP.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

CorEduard

Gracias [EX3], probaré hacer lo que me dijiste :)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.