It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
                            
                        
                    
                
                                7年前关闭。
            
                    
我经常遇到带有zip签名的文件类型,但它们不是压缩档案,或者根本不是zip文件。通常,签名中的文件看起来像压缩档案,但实际上,它们只是自定义数据集的容器。

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

通过编程方式,如何创建自己的新文件类型定义,从而避免有关创建新文件类型和使用zip作为容器的所有复杂工作?

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



编辑:

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

最佳答案

我怀疑您是在问一个人如何创建完全像一个具有不同文件扩展名的zip文件(例如afaik是.​​APK文件所使用的策略)的东西。

答案很简单,就是您完全按照其他方式创建其中之一,并使用带有自己扩展名的文件名。如评论中所述,有许多库可用于创建和处理zip文件。

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

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

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

关于编码:(我建议您对这些问题提出一个不同的新问题-这里的许多人会比我有更多动手知识)
您提到要在潜在的异构系统上获得完全相同的数据。
我认为您必须使用文本编码:在您的C代码在不同系统上编译之后,不能保证类型长度,对齐方式或表示形式是相同的,因此仅写出二进制blob并不是很可靠。
为文本编码选择字符集时,请尝试尽可能具体,以允许您在其他系统上准确匹配字符集。

09-09 19:09
查看更多