Zlib解压缩功能复制而不是解压缩

时间:2016-04-16 15:18:09

标签: c++ qt zlib

我正在尝试在我的应用程序中使用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解压缩主题,但他们所做的只是增加了我的困惑。

任何帮助?

1 个答案:

答案 0 :(得分:0)

然后输入不是gzip文件。 gzread()用作fread()的替代品,因此当输入不是gzip文件时,它就像fread()一样工作,并且无需翻译即可读取文件。

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