91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何結合C++ File類進行文件壓縮

c++
小樊
88
2024-08-19 19:50:33
欄目: 編程語言

在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參數并進行文件壓縮操作。最后關閉文件和壓縮流。

請注意,這只是一個簡單的示例,實際使用中需要考慮更多異常情況和錯誤處理。

0
宁陕县| 兴义市| 明水县| 灵石县| 绥化市| 武邑县| 大足县| 泰兴市| 高台县| 濮阳市| 尼木县| 阿拉善左旗| 宣威市| 曲阳县| 灵璧县| 绥宁县| 丽江市| 大理市| 禄丰县| 拜城县| 轮台县| 灵台县| 宝兴县| 麻江县| 大英县| 定陶县| 苏尼特右旗| 依兰县| 塔城市| 甘孜县| 绥棱县| 精河县| 明光市| 固阳县| 白玉县| 巴林右旗| 黄陵县| 宁安市| 雅安市| 大埔区| 商丘市|