将文本和二进制数据连接到一个文件中
Concatenating text and binary data into one file
我正在开发一个应用程序,我希望能够保存和打开同一文件。第一个是几行基本上是人类可读的,它们存储有关某些属性的简单数据。数据存储在支持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 字节。
相关文章:
- 挂起和取消挂起一个文件DLL
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- C++试图读取一个文件并输出到另一个文本文件
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何将class.cpp和class.hpp编译为一个.o文件
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 如何从整个磁盘中排除要装载的一个文件
- 如何将模板和非模板函数放在一个文件中
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 使用 scope 运算符 (::) 引用另一个文件中的类
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- 为什么我不能从同一目录中的另一个文件中 #include 我的类?
- 在 c++ 中打开文件、删除标点符号并追加到另一个文件中
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- c++ 提升如果 .extension() == " "这意味着这个文件是一个文件夹?
- 是否可以在 c++ 中创建一个文件并为其提供属性以将其隐藏?(在 Ubuntu 上)
- 我需要编写一个程序来读取一个文件,该文件将输出所有唯一的整数,如果已经看到整数,它将被关闭
- 如何在标准c ++中流式传输/读取二进制文件的中间部分并写入另一个文件?