程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 基於MFC的大型數據文件處理方法

基於MFC的大型數據文件處理方法

編輯:關於C語言

 

 

在Visual C++中,MFC(微軟基礎類庫)提供了CFile和CStdioFile兩個類來進行程序中的文件輸入輸出操作。Cfile類提供了基於二進制流的文件操作,功能類似於C語言中的fread()和fwrite()函數。CStdioFile提供了基於字符串流的文件操作,功能類似於C語言中的fgets()和fputs()函數。但是,使用這兩個類進行文件操作時,對於一次文件讀寫的數據量的大小必須限制在65535字節以內。其原因是在VC中訪問大於65535字節的緩沖區需要Huge型指針,而在CFile和CStdioFile類中,使用的是Far型的指針。由於Far型指針不具有跨段尋址的能力,因此限制了一次文件讀寫的長度小於65535字節。如果傳遞給CFile和CStdioFile兩個類的成員函數的數據緩沖區的大小大於65535字節的時候,VC就會產生ASSERT錯誤。

筆者在使用Visual C++進行多媒體程序設計的時候,由於程序處理的數據量非常大,所以需要頻繁地讀寫大於65535字節的數據。在使用CFile和CStdioFile類處理巨型數據的時候一般是分段讀寫,筆者感到這樣的處理方法非常地繁瑣,同時容易導致程序編制錯誤。筆者在查閱了相關的文獻以後,找到了使用Visual C++直接讀寫巨型數據的方法。

在MFC的CFile類中提供了兩個未載入文檔的函數,其原型聲明在

AFX.H中。函數原型如下:

DWORD CFile::ReadHuge(void FAR *lpBuffer,DWORD dwCo

unt);

void CFile

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