gpt4 book ai didi

c++ - 只读取二进制 zip 文件的一部分

转载 作者:行者123 更新时间:2023-11-28 05:18:44 24 4
gpt4 key购买 nike

我正在寻找一种方法来读取二进制 zip 文件的一部分(起始位置和要读取的字节数)。目前我正在 Windows 上对此进行调查,但最理想的情况是它与平台无关。对于普通的二进制文件(解压缩),这可以通过以下方式实现:

//Open the file
std::ifstream file (path, std::ios::in | std::ios::binary | std::ios::ate);

//Move to the position to start reading
file.seekg(64);

//Read 128 bytes of the file
std::vector<unsigned char> mDataBuffer;
mDataBuffer.resize( 128 ) ;
file.read( (char*)( &mDataBuffer[0]), 128 ) ;

//Read as string
std::string s_data( mDataBuffer.begin(), mDataBuffer.end());

file.close()

此示例是 this one 的略微修改版本.

还有许多可用的解压缩包(例如 zlib 或 minizip)。每个覆盖层都有解压一个文件的功能。我可以简单地解压缩我的压缩文件,将其保存在磁盘上并使用上述方法读取它。

不幸的是,我没有找到一个示例来直接从压缩文件中读取二进制 zip 文件的一部分(如果可能的话)。因为我的文件很大,所以我不想将它完全解压到硬盘上。此外,我要阅读的部分很小,因此完全解压缩文件会浪费 cpu 时间。出于同样的原因,我也不想将完整文件解压到我的内存中。我正在寻找一种只读取压缩文件的部分的真正方法。

这在 C++ 中如何实现?

最佳答案

显然没有通用的方法可以在 zip 文件中查找。这是根据:

  • @πìντα ῥεῖ 的评论。
  • 关于在压缩文件中搜索的一般话题 here .
  • 类似的问题 here (尽管问题本身是关于 Python 的)。

关于c++ - 只读取二进制 zip 文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com