我想为我的应用程序创建一个文件格式,例如 Quake、OO 和 MS Office 07。
基本上是一个未压缩的 zip 文件夹或 tar 文件。
我需要它是跨平台的(mac和windows)。
我可以通过命令提示符和 bash 做某事吗?
我想为我的应用程序创建一个文件格式,例如 Quake、OO 和 MS Office 07。
基本上是一个未压缩的 zip 文件夹或 tar 文件。
我需要它是跨平台的(mac和windows)。
我可以通过命令提示符和 bash 做某事吗?
如果您想要一个可移植到所有平台并包含结构化数据的单个文件,请考虑使用 sqlite。您将获得一个功能齐全的符合 ACID 的数据库,该数据库作为单个文件存在于磁盘上。
您可以链接一些库以直接访问该文件,还可以使用一个命令行工具。无论您使用哪种语言,很可能都支持它。
到处都支持 Zip。如果您只需要一个容器,那么这些肯定是不错的选择。
看看开源的7Zip压缩格式。对于您的特定需求,您可以在“存档”模式下使用它,零压缩但速度非常快。
它从该站点提供了一个强大的 SDK,LZMA:
“LZMA是7-Zip程序中7z格式的默认和通用压缩方式。LZMA提供了很高的压缩比和非常快的解压速度,因此非常适合嵌入式应用。例如,它可以用于ROM(固件) 压缩。
LZMA SDK 提供了开发使用 LZMA 压缩的应用程序所需的文档、示例、头文件、库和工具。”
SQLite 很棒。
单个文件,跨平台,一个小型库,对数据的 SQL 访问,事务,整个 enchilada。
在崩溃的情况下,您可以使用事务来保证一致的返回点。检查sqlite 的用途,他们特别提倡将其用作桌面应用程序的数据模型层。
此外,还有一个命令行工具可以手动访问数据。
你应该问自己的第一件事是,“我真的需要自己做吗?”
根据您要使用它的目的,您可能最好使用通用格式和一些已经很好地处理其中一种格式的预制库。
好的起点: http: //www.destructor.de/libtar/index.htm (tar——一种“容器”格式) http://www.zlib.net/ (zlib——一种压缩数据的方法在您将其放入容器之前或之后)
如果你仍然认为你需要自己制作,我建议先学习一些非常简单的东西,比如 tar 的格式:
http://en.wikipedia.org/wiki/Tar_(file_format) 或 http://schmidt.devlib.org/file-formats/tar-archive-file-format.html
我不会制定格式,而是决定约定。容器中的一个或多个命名文件具有访问其余文件所需的元数据,并且知道如何处理它们。但是,容器本身应该只是一些普遍存在的格式,例如 zip。在这里,无需重新发明轮子。