2011-12-01 161 views
0

我有一個類似於通常使用的student結構的結構,我將多個記錄存儲在一個文件中。我希望能夠更新文件中的字段,但我不確定哪種方式是最好的。哪個是更新c中文件記錄的最好方法?

加載內存中的所有記錄,進行更改,然後用改變重寫文件? 或者製作一個tmp文件,找到要更新的數據將所有數據拷貝到tmp文件中刪除舊文件並將tmp重命名爲原始名稱?

歡迎任何其他意見! 謝謝!

回答

0

如果寫入出了問題,首先是風險文件損壞。

第二是最安全的,但涉及磁盤上的數據的兩個副本。它還需要更多文件權限(刪除文件,創建新文件,重命名等)。順便說一句,在支持它的系統上,你可能想讓重命名操作爲你刪除原始文件,而不用單獨的刪除步驟。

如果文件非常大,這兩種方法都不切實際。在這種情況下,您可能需要更新數據。處理可能的腐敗更爲複雜 - 可能會保留一份日記。

+1

如果文件非常大,則最好將數據保存在數據庫或具有事務支持的鍵值存儲中。 – Ferruccio

0

你可以memory map該文件。實現它的方式取決於您的體系結構,但是一旦文件被映射,您可以像更新其它結構一樣更新它,只有更新的後備存儲是文件。

相關問題