我有一個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