阅读量: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参数并进行文件压缩操作。最后关闭文件和压缩流。
请注意,这只是一个简单的示例,实际使用中需要考虑更多异常情况和错误处理。