Zlib解压缩函数复制而不是解压缩

Zlib decompression function copies instead of decompresses

本文关键字:解压缩 复制 压缩函数 Zlib      更新时间:2023-10-16

我正试图在Linux上使用zlib在我的应用程序中实现归档处理。该应用程序是用Qt5用C++编写的。

这是我的示例函数:

int Foo::decompress(const QString &file)
{
    char buffer[128];
    int num_read=0;
    gzFile fi = gzopen(file.toUtf8().constData(),"rb");
    FILE *outfile = fopen("/Data/test.unz", "wb");
    if (!fi || !outfile) return -1;
    while ((num_read = gzread(fi, buffer, sizeof(buffer))) > 0) {
    fwrite(buffer, 1, num_read, outfile);
    }
    gzclose(fi);
    fclose(outfile);
}

这段代码导致复制我提供给它的任何文件,而不是解压缩它。我读过其他一些zlib解压缩主题,但它们所做的只是增加我的困惑。

有什么帮助吗?

则输入不是gzip文件。gzread()充当fread()的插入式替换,因此当输入不是gzip文件时,它的工作方式与fread()类似,读取文件时不需要翻译。

由于您的输入显然不是gzip文件,而且您说的是"归档处理",所以听起来您对文件格式感到困惑。如果您正在尝试读取.zip文件,那么这与gzip文件完全不同。