zip 文件缓冲 C++

zip-file to buffer c++

我必须从 char[] 缓冲区中的 zip 文件中逐字节读取 dat 文件。 zip 文件仅包含一个 dat 文件。我想逐块解压缩会很好。我在 C++ 中使用 Visual Studio 2013。

我找到了 zip-utils (http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win),这样可以吗,因为它已有将近 10 年的历史了? Minizip 会是一个好方法吗?我想单独使用 zlib 不足以解决这个用例,对吧?

我的问题是,解压缩的最佳方法是什么?我没有处理 zip 文件的经验,想听听有经验的人的建议。

谢谢,

弗里德里希

Minizip 可以。请注意,它仍然需要 zlib 源代码才能 link with.

zip 文件不仅仅是 zlib 压缩内容块。 这是一个档案馆。

有一个目录 header,每个元素 header 你也必须解码,即使存档只包含一个文件。通常,header 会告诉您从 zip 文件中的哪个偏移量可以找到 DAT 压缩内容。然后你可能会使用 zlib 从给定的偏移量开始逐块解码。

另请注意,zip 文件格式并不总是 暗示 zlib 作为压缩器(您可以有许多不同的压缩器)。如果您掌握了创建 zip 文件的代码,这不是问题。但是如果它来自 hostile 用户,那么你应该依赖实际检查使用的压缩器并断言它是 zlib 否则你应该拒绝解压缩文件,因为你将无法这样做。