中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何結合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
东乌珠穆沁旗| 古蔺县| 白河县| 乐清市| 大冶市| 招远市| 赣榆县| 深水埗区| 临澧县| 哈尔滨市| 澳门| 丰城市| 朝阳市| 绵竹市| 怀来县| 余干县| 平利县| 沈阳市| 郴州市| 平顶山市| 合山市| 元氏县| 乌兰浩特市| 昭通市| 隆子县| 普兰县| 濮阳市| 修武县| 射阳县| 凤翔县| 南岸区| 交城县| 玛沁县| 濮阳县| 尖扎县| 文登市| 香格里拉县| 宁津县| 博湖县| 台前县| 天全县|