0

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

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

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

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


编辑:

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

4

1 回答 1

1

我怀疑您在问如何创建与具有不同文件扩展名的 zip 文件完全相同的东西(例如,afaik 是用于 .APK 文件的策略)。

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

该文件可以(如 APK)在存档实用程序中打开,但默认情况下与系统上的某些其他操作相关联(因为 apk 与安装相关联,.blend 与搅拌机相关联)。

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

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

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

于 2012-11-19T15:25:54.690 回答