使用zlib和mingw

时间:2015-06-04 16:07:32

标签: c++ zlib

我正在尝试使用zlib库读取test.zip文件并提取内容。我的要求是先读取每个文件并输出内容(解压缩)到内存然后再输出到文件。

我尝试了以下代码:

System.Linq

我从网上得到了上面的例子。有人提到HtmlElementCollection classButton = WebBrowser1.Document.All.Where(e => e.GetAttribute("className") == "button color") as HtmlElementCollection; classButton[index].InvokeMember("click"); 膨胀内容并填充缓冲区(这里是HtmlElementCollection)。但是,当我尝试打印它时,它打印的是.zip文件的相同内容(示例#include <iostream> #include <zlib.h> using namespace std; #define LINE 1024 int main() { const char *filename = "hello.zip"; gzFile inFileZ = gzopen(filename, "rb"); if (inFileZ == NULL) { printf("Error: Failed to gzopen %s\n", filename); return -1; } unsigned char unzipBuffer[8192]; unsigned int unzippedBytes; std::vector<unsigned char> unzippedData; while (true) { unzippedBytes = gzread(inFileZ, unzipBuffer, 8192); if (unzippedBytes > 0) { cout << unzippedBytes << endl; for (int i = 0; i < unzippedBytes; i++) { cout << unzipBuffer[i]; } } else { break; } } gzclose(inFileZ); return 0; } 带有不可读代码)。

我相信我没有正确使用zlib的API。但是我找不到与此相关的示例。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

zlib库不直接处理zip格式。 zlib提供了处理缩减的zip条目所需的原始deflate压缩和解压缩,以及CRC-32计算工具。但是,您需要编写自己的代码或使用其他库来解析和处理zip格式。

gzip不是拉链。它们是两种完全不同的格式,它们使用或可能使用相同的原始压缩格式。

答案 1 :(得分:0)

这是来自http://www.info-zip.org/的C中已知的ZIP重新实现。他们有Windows DLL,我相信可以用来做你想做的事情

更新

这里有一些例子 http://www.vbaccelerator.com/home/VB/Code/Libraries/Compression/Unzipping_Files/article.asp