2010-03-27 39 views
3

我想在不覆蓋任何內容的情況下寫入文件。這是一個包含記錄的文本文件。當我刪除一個特定的記錄時,我實際上並沒有將它從文件中刪除,我只是將信息放在標題中說明它已被刪除。我怎樣才能做到這一點?如何追加到g ++中的文本開頭

+2

我想你是指prepend。 – Cam

回答

2

無法從頭開始重寫文件而無法附加到文件的開頭部分。它必須走到最後(這是有道理的,因爲這就是「追加」這個詞的意思)。

如果您希望能夠在不爲該標記預留空間的情況下將記錄標記爲已刪除,則需要將信息放在末尾或重寫所有內容。

更明智的做法的確是預留空間 - 例如在每個記錄中放置一個「已刪除」字段。

+0

如果我在開始的地方預留空白空間,我可以存儲有關刪除哪些文件的信息,該怎麼辦? – neuromancer

+0

@Phenom,這就是他的建議。偉大的想法順便說一句(+1 @邁克爾)。 – Cam

+0

他建議通過在每條記錄中放置一個字段預留空間。我實際上是在談論保留文件前面的空間。 – neuromancer

0

一個可行的辦法是,如果有這些記錄中通常dissallowed某些字符(好像每個文件是一個記錄 - 請糾正我,如果我錯了):

使用這些字符結合一些單詞標記的編號(例如,##已刪除#或#000,如果#是記錄中通常不允許的字符)。

然後,只需改寫記錄開始處發生的任何事情;它已被刪除,因此覆蓋其中一部分並不重要。

另一方面,如果您預計需要恢復'已刪除'的文件,這可能不是一個好主意。順便說一句 - 如果你在文件末尾添加了被刪除的標誌,請注意,如果你知道文件大小,就很容易檢查它 - 只要看看文件的末尾。