用于缓冲 c++ 的 zip 文件
Posted
技术标签:
【中文标题】用于缓冲 c++ 的 zip 文件【英文标题】:zip-file to buffer c++ 【发布时间】:2015-03-05 11:01:20 【问题描述】:我必须从 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 文件的经验,想听听有经验的人的建议。
谢谢,
弗里德里希
【问题讨论】:
【参考方案1】:Minizip 可以。请注意,它仍然需要 zlib 源代码才能链接。
zip 文件不仅仅是 zlib 压缩内容的块。 这是一个档案。
有一个目录头,即使存档只包含一个文件,您也必须对每个元素头进行解码。通常,标题会告诉您从 zip 文件中的哪个偏移量可以找到您的 DAT 压缩内容。然后你可能会使用 zlib 从给定的偏移量开始逐块解码。
请注意,zip 文件格式并不总是暗示 zlib 是一个压缩器(您可以有许多不同的压缩器)。如果您掌握了创建 zip 文件的代码,这不是问题。但是如果它来自 hostile 用户,那么你应该依赖实际检查使用的压缩器并断言它是 zlib,否则你应该拒绝解压缩文件,因为你将无法这样做。
【讨论】:
感谢您的解释,这是有用的信息!以上是关于用于缓冲 c++ 的 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章