如何将文件放入文件中

How to put files inside files

MS Word 的 .docx 文件包含一堆 .xml 文件。

Setup.exe个文件吐出一个程序用到的几百个文件

Zip、RAR 等也包含大量压缩内容。

那么它们是如何制作的呢? MS Word 或生成这些文件的其他程序必须执行什么操作才能将文件放入文件中?

当我查看它时,我得到了一堆关于压缩的结果,但假设我想制作一个程序,将 'wraps' 文件放入一个文件中,而不会使最终结果变小。我还要写什么?

我 asking/expecting 没有执行此操作的任何源代码,我只需要一个指针。根据我在这里的提问,你认为我有什么误解吗?

即使是对文章或某些文档的简单 link,我们也将不胜感激。

好的,我会为普通文件想出一些headers,然后将它们与实际文件的字节一起写入一个custom-defined文件中。你们帮了大忙,谢谢!

至少在 POSIX 系统上(例如 Linux),文件只是一个字节流(即一个序列)。而且你只能在最后增加(或缩小,即截断)它 - 没有办法在中间插入字节(不复制其余部分)。

您需要一些约定和一些额外的软件来处理它。

您可能对 Sqlite 感兴趣,它为您提供了一个库来处理一些(例如)*.sqlite 文件作为 SQL 数据库

您还可以使用 GDBM - 一个为您提供一些索引文件抽象的库。

libtar is a library to manipulate tar archives. See also tardytar 文件后处理器。

从历史上看,Windows 有许多技术可以支持这样的解决方案。这些通常被称为复合文件或结构化存储。但是,我认为较新的 Office 文档不会使用这些技术。我认为 Office 文件格式类似于具有不同扩展名的 ZIP 文件。如果将扩展名为 .docx 的文件更改为 .zip 并使用您喜欢的压缩工具打开它,您将看到一堆文件夹和 XML 个文件。

这里有一些指向不同文件格式的描述的链接,这些文件格式创建 "files within files"