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