2016-09-21 91 views
1

环顾四周,我发现问题被问到,但不是很好的答案。如果这是一个stackoverflow重复(对不起!)使用zlib附加到压缩文件

我的目标是有一个zlib压缩文件,我追加到不同的间隔(如日志文件)使用C/C++。由于缓冲区大小的限制,我希望避免必须将整个文件保存在内存中以追加新项目。

+1

您的帖子目前的格式太宽泛,不适合Stack Overflow。请访问[帮助中心](http://stackoverflow.com/help)并阅读[如何提出一个好问题]部分(http://stackoverflow.com/help/how-to-ask)。 –

+0

@CaptainObvlious:通过简化并指出一个例子可能是日志文件,更新了这个问题对你来说不那么模糊。仍然无法找到与Stackoverflow相匹配的任何东西,并且正在研究Adler的答案。这似乎是现货。 – goodwince

+1

@CaptainObvlious这个问题对我来说似乎不太宽泛。这非常简单和具体。 “你如何附加到zlib流?” –

回答

1

这听起来像你正在试图保留一个像压缩日志,每次追加少量的数据。为此,您可以查看gzlog.hgzlog.c了解如何执行此操作的示例。

您还可以看看gzappend,它将数据附加到gzip文件。

这些都很容易适应zlib流。

+0

'gzappend'需要'gzip'文件作为输入,但是如果我想将数据追加到zlib压缩文件呢?如果我错了,请纠正我。 – Sagar

0

马克阿德勒的答案非常接近我所需要的,但由于已经扎根于zlib库和资源有限的嵌入式设备中,我被卡住了。

我最后简单地为每个数据段附加了一个分隔符(例如:@@ delimiter @@),并且一旦准备好读取完成的文件(不同的应用程序),它会搜索这些段并创建压缩的数组对象部分,然后单独解压缩。

我仍然认为阿德勒的答案是正确的,因为它是对其他程序员更有帮助的有用信息。