如何结合C++ File类进行文件压缩

avatar
作者
筋斗云
阅读量:0

在C++中,可以使用File类结合压缩库(如zlib)来实现文件压缩。以下是一个简单的示例代码来演示如何在C++中通过File类进行文件压缩:

#include <iostream> #include <fstream> #include <zlib.h>  int main() {     // 打开需要压缩的文件     std::ifstream inputFile("inputfile.txt", std::ios::binary);     if (!inputFile.is_open()) {         std::cerr << "Failed to open input file\n";         return 1;     }      // 打开压缩后的文件     std::ofstream compressedFile("compressedfile.gz", std::ios::binary);     if (!compressedFile.is_open()) {         std::cerr << "Failed to create compressed file\n";         return 1;     }      // 设置zlib参数     z_stream defstream;     defstream.zalloc = Z_NULL;     defstream.zfree = Z_NULL;     defstream.opaque = Z_NULL;     defstream.avail_in = 0;     defstream.next_in = Z_NULL;     if (deflateInit(&defstream, Z_BEST_COMPRESSION) != Z_OK) {         std::cerr << "Failed to initialize zlib\n";         return 1;     }      // 压缩文件     char buffer[1024];     int ret;     do {         inputFile.read(buffer, sizeof(buffer));         defstream.avail_in = inputFile.gcount();         defstream.next_in = (Bytef *)buffer;         do {             defstream.avail_out = sizeof(buffer);             defstream.next_out = (Bytef *)buffer;             ret = deflate(&defstream, Z_FINISH);             compressedFile.write(buffer, sizeof(buffer) - defstream.avail_out);         } while (defstream.avail_out == 0);     } while (ret != Z_STREAM_END);      // 关闭文件和压缩流     deflateEnd(&defstream);     inputFile.close();     compressedFile.close();      std::cout << "File compressed successfully\n";      return 0; } 

在这个示例中,首先打开需要压缩的文件inputfile.txt和压缩后的文件compressedfile.gz,然后初始化zlib参数并进行文件压缩操作。最后关闭文件和压缩流。

请注意,这只是一个简单的示例,实际使用中需要考虑更多异常情况和错误处理。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!