一个大文件,还是几个小文件?

One large file, or several small files?

我正在将 3D 模型数据写入文件,其中包含许多不同类型的信息(网格、纹理、动画等),大小约为 50 到 100 MB。

我想把所有这些都放在一个文件中,但我担心如果我只需要读取该文件的一小部分就可以得到我想要的东西,我会付出代价。

我应该为此使用多个较小的文件,还是可以使用一个非常大的文件?我不知道文件系统如何对待试图跳转大文件的尝试,所以据我所知,遍历大文件可能代价高昂,或者根本没有问题。

此外,如果使用单个大文件,我必须做什么特别的事情吗?

访问文件中间的数据没有问题 - 操作系统不需要读取整个文件,它可以轻松跳到任何一点。复杂性在于您需要提供一个可以读取的索引,以确定各种数据的位置。

例如,如果您想读取特定的动画,您将需要一种方法来告诉您的程序该数据在文件中的位置。一种方法是在文件的开头存储一个索引结构,您的程序将读取它以找出所有数据片段的位置。然后它可以在这个索引中查找动画,发现它在位置 24680 并且是 2048 字节长,然后它可以寻找到这个位置来读取数据。

如果您不熟悉在文件中查找,您可能需要查找 fseek 调用:http://www.cplusplus.com/reference/cstdio/fseek/