您好,登錄后才能下訂單哦!
在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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。