我正在开发一个应用程序,我有几个数据,我希望能够保存到同一个文件并从中打开。第一个是几行基本上是人类可读的,存储关于某些属性的简单数据。数据存储在支持AttributeList
和operator<<
的{{1}}个对象中。其余的是我已加载到内存中的.png图像。
如何将所有这些数据保存到一个文件中,以便我可以轻松地将其读回内存?有没有办法将图像数据存储在内存中,这将使这更容易?
答案 0 :(得分:2)
如何以所有可能的方式将所有这些数据保存到一个文件中 容易把它读回内存?有没有办法存储图像 内存中的数据会使这更容易吗?
是。
在我曾经使用的嵌入式系统中,要求是将sysstem配置捕获到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-in-a-class实例并调用popen读取操作。通常对用户的反馈很少(因为UNIX哲学的风格,即没有成功消息),因此我包括(对于此演示)-v(用于详细选项)。生成的反馈将列出的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
dir列表中的一个片段显示了我的可执行文件,源代码和新创建的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个字节。