【发布时间】:2010-09-09 21:33:21
【问题描述】:
我想为我的应用程序创建一个文件格式,例如 Quake、OO 和 MS Office 07。
基本上是一个未压缩的 zip 文件夹或 tar 文件。
我需要它是跨平台的(mac 和 windows)。
我可以通过命令提示符和 bash 做点什么吗?
【问题讨论】:
标签: windows macos file-format container-file
我想为我的应用程序创建一个文件格式,例如 Quake、OO 和 MS Office 07。
基本上是一个未压缩的 zip 文件夹或 tar 文件。
我需要它是跨平台的(mac 和 windows)。
我可以通过命令提示符和 bash 做点什么吗?
【问题讨论】:
标签: windows macos file-format container-file
如果您想要一个可移植到所有平台并包含结构化数据的单个文件,请考虑使用 sqlite。您将获得一个功能齐全的符合 ACID 的数据库,该数据库作为单个文件存在于磁盘上。
您可以链接一些库以直接访问该文件,并且您还可以使用一个命令行工具。无论您使用什么语言,很可能都有对它的支持。
【讨论】:
看看开源的7Zip 压缩格式。根据您的特定需求,您可以在“存档”模式下使用它,零压缩但速度非常快。
它提供了一个强大的 SDK,LZMA,来自该站点:
"LZMA是7-Zip程序中7z格式的默认且通用的压缩方式。LZMA提供了很高的压缩比和非常快的解压速度,因此非常适合嵌入式应用。例如,它可以用于ROM(固件)压缩。
LZMA SDK 提供开发使用 LZMA 压缩的应用程序所需的文档、示例、头文件、库和工具。”
【讨论】:
Zip 在任何地方都受支持。如果您只需要一个容器,那么这些肯定是不错的选择。
【讨论】:
SQLite 很棒。
单个文件、跨平台、小型库、对数据的 SQL 访问、事务、整个 enchilada。
您可以使用事务来保证在崩溃的情况下一致的返回点。检查uses for 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。在这里,无需重新发明轮子。
【讨论】: