哪个是更新c中文件记录的最佳方法?

时间:2011-12-01 19:42:03

标签: c io

我有一个类似于通常使用的学生结构的结构,我将多个记录存储在一个文件中。我希望能够更新文件中的字段,但我不确定哪种方式最好。

将所有记录加载到内存中,进行更改,然后只需使用更改重写文件? 或者制作一个tmp文件,找到要更新的数据将所有数据复制到tmp文件中删除旧文件并将tmp重命名为原始名称?

欢迎任何其他意见! 谢谢!

2 个答案:

答案 0 :(得分:0)

如果写入出现问题,首先是风险文件损坏。

第二个是最安全的,但涉及磁盘上的两个数据副本。它还需要更多文件权限(删除文件,创建新文件,重命名等)。顺便说一下,在支持它的系统上,您可能希望让重命名操作为您删除原始文件,而无需单独的删除步骤。

如果文件非常大,这两种方法都是不切实际的。在这种情况下,您可能需要更新数据。处理可能的腐败更为复杂 - 也许维持一份期刊。

答案 1 :(得分:0)

您可以memory map该文件。这样做的方式取决于您的体系结构,但是一旦文件被映射,您就可以像任何其他结构一样更新它,只有更新的后备存储是文件。