C++中ZIP文件的写入

发布时间:2024-10-30 10:58:26 作者:小樊
来源:亿速云 阅读:86

在C++中,你可以使用第三方库来处理ZIP文件

首先,确保你已经安装了minizip库。接下来,创建一个名为main.cpp的文件,并将以下代码粘贴到文件中:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include "minizip/zip.h"
#include "minizip/unzip.h"
#include "minizip/ioapi.h"

void zipFile(const std::string& zipFilename, const std::vector<std::string>& filenames) {
    zipFile_t zipFile;
    int error = 0;

    error = zipOpen(&zipFile, zipFilename.c_str(), ZIP_CREATE | ZIP_TRUNCATE);
    if (error != ZIP_OK) {
        std::cerr << "Error opening zip file: " << zipFilename << std::endl;
        return;
    }

    for (const auto& filename : filenames) {
        error = zipOpenNewFileInZip(&zipFile, filename.c_str(), NULL, NULL, 0, ZIP_DEFLATED, Z_DEFLATED_LEVEL_DEFAULT);
        if (error != ZIP_OK) {
            std::cerr << "Error adding file to zip: " << filename << std::endl;
            zipClose(zipFile);
            return;
        }

        std::ifstream file(filename, std::ios::binary);
        if (!file) {
            std::cerr << "Error opening file: " << filename << std::endl;
            zipCloseFileInZip(&zipFile);
            return;
        }

        std::vector<char> buffer(std::istreambuf_iterator<char>{file}, {});
        error = zipWriteInFileInZip(&zipFile, buffer.data(), buffer.size());
        if (error != ZIP_OK) {
            std::cerr << "Error writing file to zip: " << filename << std::endl;
            zipCloseFileInZip(&zipFile);
            return;
        }

        file.close();
        zipCloseFileInZip(&zipFile);
    }

    zipClose(zipFile);
}

int main() {
    std::vector<std::string> filenames = {"file1.txt", "file2.txt", "file3.txt"};
    zipFile("example.zip", filenames);
    std::cout << "ZIP file created successfully." << std::endl;
    return 0;
}

这个程序将创建一个名为example.zip的ZIP文件,并将file1.txtfile2.txtfile3.txt文件添加到其中。请确保这些文件在程序运行时存在于正确的位置。

要编译此程序,请使用以下命令(确保已链接minizip库):

g++ main.cpp -o main -lminizip -lz

然后运行生成的可执行文件:

./main

这将创建一个名为example.zip的ZIP文件,其中包含指定的文件。

推荐阅读:
  1. C++中递增运算符重载如何实现
  2. C++数据结构之AVL树如何实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:C++解压加密ZIP文件

下一篇:C++解压多卷ZIP包

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》