我正在使用作为Zlib的一部分分发的minizip包来解压缩内存中的文件。我希望能够在归档中当前打开的文件中的未压缩数据中寻找任意位置。这样做的最佳方式是什么?
在API中,我看到以下内容:
extern int ZEXPORT unzSetOffset ( unzFile file, uLong pos );
但这似乎是在档案文件本身寻找原始位置,而不是在当前打开的文件中。在绝对最坏的情况下,我可以关闭并重新打开文件然后丢弃x字节,直到我到达正确的位置,但那将是可怕的。还有更好的方法吗?
答案 0 :(得分:2)
问题是压缩流不无上下文:您需要解压缩所有以前的数据,以便达到适当的给定状态。
不幸的是,看看WinZip或WinRAR是如何处理的:他们在幕后解压缩你的所有数据,以便能够透明地处理任何数据。
我希望这会有所帮助。