【问题标题】:Trouble getting zip_utils to work with gzip files无法让 zip_utils 处理 gzip 文件
【发布时间】:2021-01-01 16:53:39
【问题描述】:

我正在使用 zip_utils。

https://www.codeproject.com/Articles/7530/Zip-Utils-Clean-Elegant-Simple-Cplusplus-Win

我让它可以处理 zip 文件,但我无法压缩任何 .gz (gzip) 文件。文档(见上文)似乎表明它应该可以工作。这是我正在使用的代码:

HZIP hz = OpenZip(sourcePath.c_str(), 0);
SetUnzipBaseDir(hz, dir.c_str());
ZIPENTRY ze; GetZipItem(hz, -1, &ze); int numitems = ze.index; // -1 gives overall information about the zipfile

for (int zi = 0; zi < numitems; zi++)
{
    ZIPENTRY ze; GetZipItem(hz, zi, &ze); // fetch individual details
    UnzipItem(hz, zi, ze.name);         // e.g. the item's name.
    //UnzipItem(hz, zi, destPath.c_str());         
}
CloseZip(hz);

【问题讨论】:

  • 究竟是什么不起作用?有错误代码吗?
  • 未生成错误代码。输出文件为空。
  • 你检查了吗?所有这些“zip”函数都会返回它们的状态。
  • 刚刚对所有 zip 函数进行了测试。使用 zip 文件,所有函数都返回零。但是,对于 gz 文件,openzip 返回,131:“尝试将文件指针移动到文件开头之前”
  • 我对那个库一无所知,只是指出你总是需要检查任何 API 的返回码。而且,那个图书馆已经有 15 年没有动过了;没有更多最新(和维护)的 zip 库吗? (不要回答这个问题;这是一个反问)

标签: c++ zip gzip zlib


【解决方案1】:

我没有看到这个库会处理 gzip 文件的迹象。

【讨论】:

  • 从上面的页面,“此代码基于gzip 1.1.4”
  • 我认为他们的意思是它基于 gzip,但正如你所说,这并不意味着它实际上可以缩小 gzip。我将您的答案标记为最佳。它还在“unzip.cpp”的源代码中说:“该库还支持读取和写入 gzip (.gz) 格式的文件 // 具有类似于 stdio 的接口。”但你是对的,它没有说,“这个图书馆”它说,“图书馆”。我的错误
  • 它使用来自 gzip 的代码仅用于 deflate 数据的核心压缩和解压缩。它不处理 gzip 格式。
猜你喜欢
  • 1970-01-01
  • 2013-01-02
  • 2016-05-26
  • 2014-06-07
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多