使用 zlib 附加到压缩文件
Append to compressed file using zlib
环顾四周,我找到了被问到的问题,但没有很好的答案。如果这是 Whosebug 重复项(抱歉!)
我的目标是拥有一个 zlib 压缩文件,我在不同的时间间隔使用 C/C++ 附加到该文件(例如日志文件)。由于缓冲区大小的限制,我希望避免将整个文件保存在内存中以附加新项目。
听起来您正在尝试保留类似压缩日志的内容,每次都附加少量数据。为此,您可以查看 gzlog.h
and gzlog.c
以了解如何执行此操作的示例。
您还可以查看 gzappend
,它将数据附加到 gzip 文件。
这些都很容易适应 zlib 流。
Mark Adler 的回答非常接近我的需要,但由于已经固定在 zlib 库和资源有限的嵌入式设备上,我 was/am 卡住了。
我最后简单地在每个数据部分附加了一个分隔符(例如:@@delimiter@@),一旦准备好读取完成的文件,(不同的应用程序)它会寻找这些部分并创建一个数组对象然后单独解压缩的压缩部分。
我仍然将 Adler 的回答标记为正确,因为它是有用的信息,将对其他程序员有更多帮助。
环顾四周,我找到了被问到的问题,但没有很好的答案。如果这是 Whosebug 重复项(抱歉!)
我的目标是拥有一个 zlib 压缩文件,我在不同的时间间隔使用 C/C++ 附加到该文件(例如日志文件)。由于缓冲区大小的限制,我希望避免将整个文件保存在内存中以附加新项目。
听起来您正在尝试保留类似压缩日志的内容,每次都附加少量数据。为此,您可以查看 gzlog.h
and gzlog.c
以了解如何执行此操作的示例。
您还可以查看 gzappend
,它将数据附加到 gzip 文件。
这些都很容易适应 zlib 流。
Mark Adler 的回答非常接近我的需要,但由于已经固定在 zlib 库和资源有限的嵌入式设备上,我 was/am 卡住了。
我最后简单地在每个数据部分附加了一个分隔符(例如:@@delimiter@@),一旦准备好读取完成的文件,(不同的应用程序)它会寻找这些部分并创建一个数组对象然后单独解压缩的压缩部分。
我仍然将 Adler 的回答标记为正确,因为它是有用的信息,将对其他程序员有更多帮助。