在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.txt
、file2.txt
和file3.txt
文件添加到其中。请确保这些文件在程序运行时存在于正确的位置。
要编译此程序,请使用以下命令(确保已链接minizip库):
g++ main.cpp -o main -lminizip -lz
然后运行生成的可执行文件:
./main
这将创建一个名为example.zip
的ZIP文件,其中包含指定的文件。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。