minizip c++ 压缩文件及文件夹
时间: 2024-02-22 17:55:57 浏览: 270
c++文件压缩
minizip是一个轻量级的C/C++库,它提供了压缩和解压缩文件的功能。下面是使用minizip压缩文件和文件夹的示例代码:
```c++
#include <stdio.h>
#include "minizip/zip.h"
int main() {
const char* zipfilename = "test.zip";
const char* filepath = "example.txt";
const char* folderpath = "example_folder";
// 创建一个zip文件
zipFile zip = zipOpen(zipfilename, APPEND_STATUS_CREATE);
// 压缩一个文件
zip_fileinfo fileinfo = { 0 };
zipOpenNewFileInZip(zip, filepath, &fileinfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION);
FILE* fin = fopen(filepath, "rb");
char buffer[1024];
int size_read;
do {
size_read = fread(buffer, 1, sizeof(buffer), fin);
if (size_read < sizeof(buffer) && feof(fin) == 0) {
printf("读取文件时发生错误\n");
break;
}
zipWriteInFileInZip(zip, buffer, size_read);
} while (size_read > 0);
fclose(fin);
zipCloseFileInZip(zip);
// 压缩一个文件夹
zipOpenNewFileInZip(zip, folderpath, &fileinfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION);
zipCloseFileInZip(zip);
// 关闭zip文件
zipClose(zip, NULL);
return 0;
}
```
在上面的示例中,我们创建了一个名为test.zip的zip文件,并将example.txt文件和example_folder文件夹压缩到其中。使用minizip的最重要的部分是zipOpenNewFileInZip和zipCloseFileInZip函数,它们用于在zip文件中创建新文件并将数据写入其中。压缩文件和压缩文件夹的过程是类似的,只需要调用zipOpenNewFileInZip函数并传递正确的路径即可。
阅读全文