2017-04-27 69 views
0

我一直在搞亂二進制文件最後一整週。我無法弄清楚如何做的一件事就是有選擇地從二進制文件中刪除一條記錄。 這是可能的C++?如果不是,您可以通過哪些方式來做到這一點。刪除二進制文件中的記錄?

我正在考慮,也許創建一個沒有內部記錄的重複文件,但這對於非常大的數據文件來說似乎效率很低。任何更有效的方法,或任何有效地複製文件的方式?我很驚訝有辦法刪除文件,但不能有選擇地從文件中刪除。

+4

您可以在每條記錄中包含刪除標記。這是多少個數據庫服務器的操作;刪除的記錄只是標記爲已刪除,並且空間稍後會重新用於其他記錄(或者當相關表格被優化/壓縮/清除時,空間將被回收)。 – cdhowie

+0

當你刪除一條記錄時,你會有什麼期待 - 答案取決於你希望刪除的記錄佔用的空間會發生什麼。 – Soren

+0

@cdhowie這是一個有趣的想法。有時間研究如何完美實現這一點。 – ReMaKe

回答

3

與內存中的數據結構不同,您無法從文件中提取記錄。你必須:

  1. 讀取文件的內容到內存中的數據結構
  2. 從內存中的數據結構中刪除相關數據。
  3. 將更新的數據結構寫回文件。
+0

我明白了,謝謝你提供的信息。我一定會牢記這一點,並會嘗試這裏列出的一些東西。這,並將它們標記爲已刪除的聲音很有趣。 – ReMaKe

+0

@ReMaKe,不客氣。祝你的項目好運。 –

0

只要確保記錄中有一個標記「已刪除」,在第一次寫入記錄時設置爲false,但如果要標記刪除的記錄,則更改爲true。