程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 二進制文件隨機存取的兩種方法

二進制文件隨機存取的兩種方法

編輯:關於VC++

以下是本人使用C++實現二進制文件隨機存取的兩種常用方法,寫出來,讓您見笑,還望方家點撥。

第一種方法:根據記錄編號,對每一條記錄固定位置存取,實現隨機存取

設計思想:

每一條記錄的記錄編號,決定該記錄的存取位置。如:第一條記錄記錄編號是1,放在位置1;第二條記錄的記錄編號是2,放在位置2;………,依次類推。

要修改第二條記錄,首先根據記錄編號計算出該記錄的存儲位置,然後將內置指針直接調至此處,進行修改。

新添記錄,可根據它的記錄編號存儲到文件的相應位置。

這種隨機存取方法通俗易懂,簡便易行。適用於記錄條數不多的文件,要求記錄編號盡可能連續。其缺點是存儲記錄不連續,占用空間大。

工程Random1演示了這種方法,建議您先演示工程,在對該工程有一個了解的基礎上再閱讀代碼。代碼中已經對與本文相關的語句作了詳細說明,您可以非常方便地讀懂。

第二種方法:利用鏈表指針,實現隨機操作

設計思想:

對文件進行操作前,先把文件讀入內存,做成鏈表以方便操作,操作完畢後存盤保存。

這種方法由於使用鏈表指針,對記錄的增加、刪減都非常方便。

這種方法不需要記錄編號,記錄存儲連續,占用空間小。其缺點是對程序設計人員要求較高,必須對鏈表指針有一定了解。

工程Random2演示了這種方法,同樣建議您先演示工程,在對該工程有一個了解的基礎上再閱讀代碼。

下面對該工程作幾點簡要說明:

工程新建了一個類CFileRandom實現文件的隨機操作。成員函數add用於增加一個記錄;change可以修改一個記錄;DescentSort實現降序排列;Display顯示所有記錄;Read把所有記錄調入內存;Remove用於刪除一條記錄;Save用於將內存中的整個鏈表存盤保存。

CRandom2Dlg使用CFileRandom類實現具體操作。同樣,與本文相關的源碼都作了詳細說明。

再次感謝您閱讀本文,歡迎您批評指正。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved