如何使用zip作为数据的容器

How I can use a zip as a container for my data?

本文关键字:数据 何使用 zip      更新时间:2023-10-16

我经常遇到有zip签名的文件类型,但它们不是压缩档案,或者根本不是zip文件;通常,签名中的一些文件看起来像压缩的档案,但实际上它们只是自定义数据集的容器。

例如.blend文件或.apk可以使用归档实用程序打开。

使用编程方法,我如何创建自己的新文件类型定义,避免创建新文件类型和使用zip作为容器的所有复杂部分?

我对C/C++编程感兴趣。


编辑:

我还想强调一个事实,我谈论容器是为了避免与平台相关的问题,比如编码和数据表示。

我怀疑你在问如何创建一个完全类似于具有不同文件扩展名的zip文件(例如,afaik是.APK文件使用的策略)。

相当简单的答案是,您完全按照其他方式创建其中一个,并使用具有自己扩展名的文件名。正如评论中提到的,有各种库可以用来创建和处理zip文件。

这个文件(像APK一样)可以在归档实用程序中打开,但默认情况下与系统上的一些其他操作关联(因为APK与安装关联,.blend与搅拌机关联)。

这种技术非常常见,许多常见的应用程序文件格式只不过是文件的压缩集合和一些标准索引文件,这些文件显示了它们是如何组合在一起的。

另请注意@Jan Hudec关于编码问题的评论——通过这条路线无法逃脱。

关于编码:(我建议你就这些问题问一个新的、不同的问题——这里的许多人比我有更多的实践知识)您提到您希望在潜在的异构系统上获得完全相同的数据。我认为你必须使用文本编码:在不同的系统上编译C代码后,无法保证类型长度、对齐方式或表示方式是相同的,因此简单地写出二进制Blob不是很可靠。。在为文本编码选择字符集时,请尽可能具体,以便在其他系统上准确匹配字符集。

相关文章: