Red de conocimiento informático - Material del sitio web - ¿Cómo usar C para implementar la compresión y descompresión de múltiples archivos (usando la biblioteca dependiente zlib) en la plataforma Linux?

¿Cómo usar C para implementar la compresión y descompresión de múltiples archivos (usando la biblioteca dependiente zlib) en la plataforma Linux?

Debido a que los sistemas Unix siempre han insistido en la separación de funciones, es muy común comprimir varios archivos a la vez y luego comprimirlos.

El trabajo de desarrollo generalmente se basa en el ejemplo de interfaz de zlib-X. Solo una biblioteca de algoritmos gzip y deflate. Proporciona un ejemplo llamado "minizip (contrib\minizip)" que proporciona una forma de manipular archivos ZIP. A continuación se resumirán las dos interfaces tontas de "ZLib?":

BOOL?ZipCompress(LPCTSTR?lpszSourceFiles,?LPCTSTR?lpszDestFile);

BOOL?ZipExtract(LPCTSTR? lpszSourceFile,?LPCTSTR?lpszDestFolder);?

¿El archivo fuente que se importará?

El código en el directorio principal de ZLib, excepto minigzip.c, example.c;?

El código en el directorio contrib\minizip, excepto minizip.c, miniunz.c.

¿API relacionada?

Aunque

"minizip" es más un ejemplo, salvo sus programas principales "minizip.c" y "miniunz.c", el resto del código se puede considerar como Biblioteca de nivel superior "ZLib", que encapsula operaciones relacionadas con el formato de archivo "ZIP". .minizip.c. y miniunz.c.

Eso es lo que vamos a escribir: convertirlo de un programa de línea de comandos en la interfaz de apuntar y disparar antes mencionada. Las principales API utilizadas en minizip.c y miniunz.c incluyen:

¿Relacionadas con la compresión?

zipOpen64.

¿zipCerrar?

zipOpenNewFileInZip?

zipCloseFileInZip?

zipWriteInFileInZip

¿Relacionado con la descompresión:?

unzOpen64?

¿deshacer cerrar?

unzGetGlobalInfo64?

¿unzGoToNextFile?

unzGetCurrentFileInfo64?

¿deshacer OpenCurrentFile?

¿unzCloseCurrentFile?

unzReadCurrentFile

Creo que puedes adivinar cómo usar estos nombres. ¿minizip? Hay algunas funciones con "64", otras sin y algunas funciones con versiones "2" y "3", versiones "2", "3" y "4". Aquí utilizamos todas las funciones con "64" y no las funciones con "2", "3" y "4".

Referencia fuente:/Streamlet/archive/2010/09/22/127368.html