我正在尝试使用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。但是我找不到与此相关的示例。有人可以帮助我吗?
答案 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