c++ minizip如何实现压缩和解压功能

   2024-10-01 3430
核心提示:要实现压缩和解压功能,可以使用minizip库提供的函数来完成。以下是一个简单的示例代码,展示了如何使用minizip库来进行压缩和解

要实现压缩和解压功能,可以使用minizip库提供的函数来完成。以下是一个简单的示例代码,展示了如何使用minizip库来进行压缩和解压:

#include <stdio.h>#include "zip.h"#include "unzip.h"int main() {    const char* zipfilename = "example.zip";    const char* filename = "example.txt";    // 压缩文件    zipFile zf = zipOpen(zipfilename, 0);    if (zf == NULL) {        fprintf(stderr, "Error opening %s\n", zipfilename);        return -1;    }    FILE* fin = fopen(filename, "rb");    if (fin == NULL) {        fprintf(stderr, "Error opening %s\n", filename);        return -1;    }    zip_fileinfo zi;    mEMSet(&zi, 0, sizeof(zip_fileinfo));    zipOpenNewFileInZip(zf, "example.txt", &zi, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION);        char buf[1024];    int size;    while ((size = fread(buf, 1, sizeof(buf), fin)) > 0) {        zipWriteInFileInZip(zf, buf, size);    }    fclose(fin);    zipCloseFileInZip(zf);    zipClose(zf, NULL);    // 解压文件    unzFile uf = unzOpen(zipfilename);    if (uf == NULL) {        fprintf(stderr, "Error opening %s\n", zipfilename);        return -1;    }    unz_file_info file_info;    if (unzLocateFile(uf, "example.txt", 0) != UNZ_OK) {        fprintf(stderr, "File not found in zip\n");        return -1;    }    if (unzOpenCurrentFile(uf) != UNZ_OK) {        fprintf(stderr, "Error opening current file\n");        return -1;    }    FILE* fout = fopen("example_unzipped.txt", "wb");    if (fout == NULL) {        fprintf(stderr, "Error opening output file\n");        return -1;    }    while ((size = unzReadCurrentFile(uf, buf, sizeof(buf))) > 0) {        fwrite(buf, 1, size, fout);    }    fclose(fout);    unzCloseCurrentFile(uf);    unzClose(uf);    return 0;}

在这个示例中,我们首先打开一个zip文件,然后将一个文本文件压缩到zip文件中。接着,我们再打开这个zip文件,解压出文本文件并保存到磁盘上。这样就完成了一个简单的压缩和解压的功能。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号