cfile類
檔案的讀寫,檔案中的資料讀取、資料寫入與檔案指標的操作都是以位元組為單位。
資料的讀取和寫入是從檔案指標的位置開始的(當開啟乙個檔案的時候,檔案指標預設在檔案的開頭)。
cfile中最重要的乙個成員函式open的使用
file.open( lpctstr lpszfilename, uint nopenflags, cfileexception* perror = null );
//pszfilename是檔名,可包含檔案路徑,若只有檔名,則預設路徑為工程路徑,nopenflags是檔案開啟模式,perror是開啟失敗時用來接收失敗資訊,一般設定為null。
其中nopenflags的常用模式有:
表1-1 cfile檔案開啟方式
標誌含義
cfile::modecreate
建立新檔案,如果檔案已存在,則將其長度變成0
cfile::modenotruncate
與modecreate組合使用,如果檔案已存在,則不會將其長度變成0
cfile::moderead
以唯讀方式開啟檔案
cfile::modereadwrite
以讀寫方式開啟檔案
cfile::modewrite
以只寫方式開啟檔案
cfile::modenoinherit
組織該檔案被子項繼承
cfile::sharedenynone
以共享模式開啟檔案,不會禁止其他程序對檔案的讀寫
cfile::sharedenyread
禁止其他程序對檔案的讀操作
cfile::sharedenywrite
禁止其他程序對檔案的寫操作
cfile::shareexclusive
以獨佔模式開啟檔案,禁止其他程序對檔案的讀寫
cfile::typetext
以文字方式開啟檔案
cfile::typebinary
以二進位制方式開啟檔案
其中模式的具體解釋:
cfile::modecreate 若開啟檔案不存在,則建立乙個新檔案,如果該檔案存在,則清空它的資料。
cfile::modenotruncate 與cfile::modecreate 組合使用。如果檔案不存在,則建立乙個新檔案,如果檔案存在,則保留他原本的資料。
cfile::moderead 開啟檔案用於讀取資料。
cfile::modewrite 開啟檔案用於寫入資料。
cfile::modereadwrite 開啟檔案用於讀取和寫入資料。
cfile::typebinary 使用二進位制檔案模式。此模式僅用於cfile的派生類。
cfile::typetext 使用文字檔案模式。此模式僅用於cfile的派生類。
cfile預設使用二進位制模式讀寫檔案,cfile無法使用文字模式讀寫檔案。
cfile提供了一些常用的操作函式,如表1-2所示。
表1-2 cfile操作函式
函式含義
open
開啟檔案
close
關閉檔案
flush
重新整理待寫的資料
read
從當前位置讀取資料
write
向當前位置寫入資料
getlength
獲取檔案的大小
seek
定位檔案指標至指定位置
seektobegin
定位檔案指標至檔案頭
seektoend
定位檔案指標至檔案尾
getfilename
獲取檔名,如:「notepad.exe」
getfilepath
獲取檔案路徑,如:「c:\windows \notepad.exe」
getfiletitle
獲取檔案標題,如:「notepad」
getposition
獲取當前檔案指標
getstatus
獲取當前檔案的狀態,返回乙個cfilestatus
#remove
靜態方法,刪除指定檔案
#rename
靜態方法,重新命名指定檔案
使用cfile操作檔案的流程如下:
構造乙個cfile物件。
呼叫cfile::open()函式建立、開啟指定的檔案。
呼叫cfile::read()和cfile::write ()進行檔案操作。
呼叫cfile::close()關閉檔案控制代碼。
檔案指標的位置設定可以使用:
seek( long loff, uint nfrom ) 把檔案指標移動到指定位置
loff :是指標偏移位元組數,若向後偏移則為正數,若向前偏移,則為負數。
nfrom :msdn上有三種取值:
cfile::begin 從檔案開頭開始算起,loff為正數;
cfile::current 當前位置開始算起;
cfile::end 從檔案結尾開始算起,loff為負數;
seektobegin( ) 把檔案指標移到檔案開頭
seektoend( ) 把檔案指標移到檔案末尾
getposition( ) 返回當前檔案指標的位置
獲取檔案的位元組數可用 getlength( ) 此函式的返回值為dword,但可直接用來分配陣列元素數目,例如:
dowrd len=file.getlength();
char *pbuf=new char[len+1] / int *pbuf=new int[len/4]
char佔乙個位元組,int佔四個位元組。
寫入檔案:
cfile file;
file.open("e:\\vc\\1.txt",cfile::modecreate|cfile::modewrite|cfile::modenotruncate,null);
file.write("helloworld",strlen("helloworld"));
//write( const void* lpbuf, uint ncount ) lpbuf是寫入資料的buf指標,ncount是buf裡需要寫入檔案的位元組數
file.close( );
讀取檔案:
cfile file;
file.open("e:\\vc\\1.txt",cfile::moderead,null);
dword len=file.getlength( );
char buf[len+1];
buf[len]=0; //0終止字串,用於輸出。
file.read(buf,len); //read( void* lpbuf, uint ncount ) lpbuf是用於接收讀取到的資料的buf指標ncount是從檔案讀取的位元組數
messagebox(buf);
MFC(CFile)檔案操作
本文將對visual c 中有關檔案操作進行全面的介紹,並對在檔案操作中經常遇到的一些疑難問題進行詳細的分析。1 檔案的查詢 當對乙個檔案操作時,如果不知道該檔案是否存在,就要首先進行查詢。mfc中有乙個專門用來進行檔案查詢的類cfilefind,使用它可以方便快捷地進行檔案的查詢。下面這段 演示了...
c 檔案讀寫 文字讀寫
include int main else return 0 格式 intfscanf file stream,constchar format,返回值 如果成功,該函式返回成功匹配和賦值的個數。如果到達檔案末尾或發生讀錯誤,則返回 eof 引數1 file stream 檔案指標 引數2 cons...
mysql讀寫檔案函式 讀寫檔案 檔案方法 函式
讀寫檔案 全域性申明 import codecs encodeing utf 8 開啟檔案的模式有 r,唯讀模式 預設 w,只寫模式。不可讀 不存在則建立 存在則刪除內容 a,追加模式。可讀 不存在則建立 存在則只追加內容 表示可以同時讀寫某個檔案 r 可讀寫檔案。可讀 可寫 可追加 w 寫讀 a ...