将文本和二进制数据连接到一个文件中

Concatenating text and binary data into one file

本文关键字:一个 文件 文本 二进制 数据 连接      更新时间:2023-10-16

我正在开发一个应用程序,我希望能够保存和打开同一文件。第一个是几行基本上是人类可读的,它们存储有关某些属性的简单数据。数据存储在支持operator<<operator>>AttributeList对象中。其余的都是我加载到内存中的.png图像。

如何将所有这些数据保存到一个文件中,以便可以轻松地将其读回内存中?有没有办法将图像数据存储在内存中,使这更容易?

如何将所有这些数据保存到一个文件中,以便我可以 轻松读回内存?有没有办法存储图像 内存中的数据会让这更容易吗?

是的。

在我曾经研究过的嵌入式系统中,要求是将系统干配置捕获到 ram 文件系统中。(1 兆字节(

我们使用 zlib 将多个文件压缩并"合并"为一个存储文件。

也许任何压缩系统都可以为您工作。 在Linux上,我会使用popen((来运行gzip或gunzip等。


更新 2017-08-07

在我的 popen 演示中(针对这个问题(,我使用标准 shell 命令构建命令字符串:

std::string cmd;
cmd += "tar -cvf dumy514DEMO.tar dumy*V?.cc ; gzip dumy514DEMO.tar ; ls -lsa *.tar.gz";
//      tar without compression             ; next do compress

然后构造我的 popen-wrapped-in-a-class 实例并调用 popen read 操作。 通常对用户的反馈很少(就像UNIX哲学的风格一样,即没有成功消息(,所以我(对于这个演示(包含了-v(用于详细选项(。生成的反馈列出了 tar 在一起的 4 个文件,我列出了生成的.gz文件。

dumy514V0.cc
dumy514V1.cc
dumy514V2.cc
dumy514V3.cc
8 -rw-rw-r-- 1 dmoen dmoen 7983 Aug  7 17:23 dumy514DEMO.tar.gz

目录列表中的一个片段显示了我的可执行文件、源代码和新创建的 tar.gz。

-rwxrwxr-x  1 dmoen dmoen 86416 Aug  7 17:18 dumy514DEMO
-rw-rw-r--  1 dmoen dmoen 13576 Aug  7 17:18 dumy514DEMO.cc
-rw-rw-r--  1 dmoen dmoen  7983 Aug  7 17:23 dumy514DEMO.tar.gz

如您所见,tar.gz约为 8000 字节。 这 4 个文件加起来大约 70,000 字节。

相关文章: