¿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