我正在尝试使用LibZip在C ++中打开一个zip存档。因为我没有找到任何有效的教程,所以我查阅了文档并找到了以下代码:

int err = 0;
zip_t *z = zip_open("file.zip", 0, &err);

zip_stat_t st;
zip_stat_init(&st);
cout << zip_stat(z, "file.zip", 0, &st) << endl;

cout << st.size << endl;

zip_close(z);


问题是zip_stat函数返回-1,文件大小为零。 err始终为0,所以我不知道问题出在哪里。
获取内容的代码应如下所示:

char *contents = new char[st.size];

zip_file *f = zip_fopen(z, "file.zip", 0);
zip_fread(f, contents, st.size);
zip_fclose(f);

delete[] contents;


但是显然我还不能测试这部分代码。
我正在使用C ++ 14和LibZip 1.5.2

最佳答案

zip_stat不返回有关zip文件的信息,而是有关zip文件中的一项的信息。因此,除非您的file.zip文件包含另一个也称为file.zip的文件,否则您的代码是错误的。

也许你是真的意思

cout << zip_stat(z, "data.zip", 0, &st) << endl;


因为您似乎正在尝试解压缩名为data.zip的zip文件条目。

关于c++ - 使用libzip打开zip文件时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57432530/

10-13 08:15
查看更多