【问题标题】:zlib iostream wrapper with support stream append支持流附加的 zlib iostream 包装器
【发布时间】:2012-09-26 14:16:19
【问题描述】:

我需要 zlib 的 iostream 包装器,它允许将数据附加到现有流的末尾。

附加模式下的gzopen() 函数遵循下一条规则。 “附加时,gzopen 不会测试文件是否以 gzip 流开头,也不会寻找 gzip 流的结尾来开始附加。gzopen 只会将 gzip 流附加到现有文件。”例如。使用“a”选项打开文件将创建具有多个压缩流的文件。

zlib 的 gzofstream 包装器将参数列表中的 std::ios_base::app 转换为 gzopen() 函数的“ab”模式。因此,gzofstream 也会创建具有多个流的文件。

但是,在我的应用程序中,我需要替代行为。主模块应该以附加模式打开文件(使用 std::ios_base::app 选项),在现有流的末尾写入小数据部分,然后关闭文件。例如,经过多次打开/关闭操作后,文件应始终包含单个压缩流。

zlib 中的 gzlog 示例具有接近所需的功能。但是,它是纯C。

你能为我的任务提出一些现成的解决方案吗?

【问题讨论】:

  • 看看Boost iostreams library,它支持压缩流。
  • Boost 库和 gzofstream 有同样的问题。它将流附加到文件中,但不将数据附加到现有流中。

标签: c++ gzip iostream zlib


【解决方案1】:

对于这种情况,似乎没有现成的解决方案:iostream 包装器不支持追加操作。

我已经基于 gzlog 和纯 C(不是 C++)实现了自己的代码。

【讨论】:

  • 您是否愿意与社区分享?
猜你喜欢
  • 2014-09-26
  • 2010-10-14
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多