我有一个archive.zip,其中包含两个加密的“.txt”文件。我想解压档案,以检索这2个文件。使用zlib解压zip文件
这是我到目前为止已经完成:
FILE *FileIn = fopen("./archive.zip", "rb");
if (FileIn)
printf("file opened\n");
else
printf("unable to open file\n");
fseek(FileIn, 0, SEEK_END);
unsigned long FileInSize = ftell(FileIn);
printf("size of input compressed file : %u\n", FileInSize);
void *CompDataBuff = malloc(FileInSize);
void *UnCompDataBuff = NULL;
int fd = open ("archive.zip", O_RDONLY);
CompDataBuff = mmap(NULL, FileInSize, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
printf("buffer read : %s\n", (char *)CompDataBuff);
uLongf UnCompSize = (FileInSize * 11/10 + 12);
UnCompDataBuff = malloc(UnCompSize);
int ret_uncp ;
ret_uncp = uncompress((Bytef*)UnCompDataBuff, &UnCompSize, (const Bytef*)CompDataBuff,FileInSize);
printf("size of uncompressed data : %u\n", UnCompSize);
if (ret_uncp == Z_OK){
printf("uncompression ok\n");
printf("uncompressed data : %s\n",(char *)UnCompDataBuff);
}
if (ret_uncp == Z_MEM_ERROR)
printf("uncompression memory error\n");
if (ret_uncp == Z_BUF_ERROR)
printf("uncompression buffer error\n");
if (ret_uncp == Z_DATA_ERROR)
printf("uncompression data error\n");
我总是得到“非压缩数据错误”,我不知道为什么。然后我想知道如何检索2个文件与我的数据未压缩。
哦,真的,我肯定会的zlib处理.zip文件..无论如何谢谢你的信息! :) – user1336204 2012-07-23 12:27:18
zlib实际上可以帮助进行压缩处理,并且源代码发行版附带了处理zip文件的贡献代码。看到我的答案。 – 2012-07-23 23:30:19
哦,libzip使用zlib。 – 2012-07-24 02:26:05