我正在尝试在我的应用程序中使用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解压缩主题,但他们所做的只是增加了我的困惑。
任何帮助?
答案 0 :(得分:0)
然后输入不是gzip文件。 gzread()
用作fread()
的替代品,因此当输入不是gzip文件时,它就像fread()
一样工作,并且无需翻译即可读取文件。
由于您的输入显然不是gzip文件,并且因为您说"存档处理",听起来您对文件格式感到困惑。如果您正在尝试读取.zip文件,那与gzip文件完全不同。