2009-11-25 62 views
0

我一直在研究Doom 3 SDK代码,特别是他们的文件系统实现。实现文件对象(C++)

系统通过传递'idFile'对象(我至少可以访问的代码),我注意到这个类提供了读取写入方法以及维护一个FILE *成员。

这向我建议FILE *在读取和写入访问处于“打开”状态时,在调用Read()和Write()之间关闭并重新打开文件(具有适当的访问权限)。
这听起来没错吗,还是我简化了它?
如果情况并非如此(我认为哪些部分不是 - 由于速度等原因),有没有人有任何建议,他们将如何实现这个优雅的界面?

请记住,我对C++和stdio都很新颖(我很确定iD支持)。

回答

1

您可以在读写模式下打开FILE *。

如果你这样做,你应该在阅读和写作之间切换时刷新并寻找已知的位置,但不必重新打开文件。

0

没有看过Doom代码(我猜你可以在创建对象时指定一个模式),你可以使用freopen()重新打开一个文件(如果需要,可以在不同的模式下),而不需要先关闭它。

+0

确定 - 如果我已经阅读了正确的文件“最初以模式”r“打开的流只能用相同的模式重新打开。”在使用这种方法读取()后,您将无法将文件写入()到文件中? – 2009-11-25 14:35:12