Zlib解压缩函数复制而不是解压缩
Zlib decompression function copies instead of decompresses
我正试图在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文件完全不同。
相关文章:
- 使用C++进行运行长度解压缩
- C++ 如何将数组值解压缩为函数参数
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 浏览压缩文件与游览解压缩它们
- 如何在C++向量中解压缩多个值
- 解压缩 C 样式数组以及C++中的参数包
- 如何在 cpp 中解压缩数字,如果它们是使用 struct.pack(fmt, v1, v2, ..) 打包在 pyth
- 如何使用 Poco::ZIP 压缩/解压缩 zip 文件
- 在编译时解压缩数组扩展数据块 (C++11/14)
- 使用 RtMidi 解压缩 Midi 时间码
- 将参数包解压缩到 std::initializer_list?
- 解压缩可变模板参数
- 解压缩附加的压缩字符串
- 使用 AVX2 将 8 位从 32 位值 (__m256i) 解压缩到__m256的最快方法
- C++宏解压缩并加入
- 解压缩串联的 zlib 流而不读取下一个字节
- 解压缩位大小不能被 8 整除的值流
- C++:使用引用和值解压缩元组,而无需复制/移动太多
- Zlib解压缩函数复制而不是解压缩