CFile::Open

CFile::Open是MFC中打開檔案的方法。

簡介

在MFC裡面,打開一個檔案最常用的方法分為以下兩步:

1.創建一個用於打開檔案的對象,通常都是聲明一個CFile或者一個CFile派生類的對象

2.調用該CFile對象的Open方法,並提供一個檔案路徑和打開方式作為Open方法的參數

Open函式的原型如下:

virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );

如果你想讀一個檔案,就用 CFile::modeRead作為第二個參數,同時 CFile::modeCreate代表創建一個檔案。

參數二: nOpenFlags可組合為以下值:

CFile::modeCreate 創建一個新的檔案,如果檔案存在將檔案截取成長度為0。 ·

CFile::modeNoTruncate 此標誌總是與modeCreate 配合使用,如果檔案存在,不將檔案截取成長度為0;如果檔案不存在即創建新檔案。這個功能往往很好用,比如說,當你需要打開一個設定檔案,但是你並不清楚這個檔案是否已經存在。

CFile::modeRead 唯讀方式打開。

· CFile::modeReadWrite 讀寫方式打開。. ·

CFile::modeWrite 只寫方式打開。 ·

CFile::modeNoInherit 阻止這個檔案被子進程繼承。 ·

CFile::shareDenyNone 打開這個檔案同時允許其它進程讀寫這個檔案。如果檔案被其它進程以兼容的模式打開,這時create操作會失敗。 ·

CFile::shareDenyRead 打開檔案拒絕其它任何進程讀這個檔案。如果檔案被其它進程用compatibility模式或者是讀方式打開,create操作失敗。. ·

CFile::shareDenyWrite 打開檔案拒絕其它任何進程寫這個檔案。如果檔案被其它進程用compatibility模式或者是寫方式打開,create操作失敗。 ·

CFile::shareExclusive 以獨占方式打開這個檔案,不允許其它進程讀寫這個檔案。如果檔案已經在其它程式或當前程式以其他方式打開來進行讀寫,將返回失敗。 ·

CFile::shareCompat 這個標誌在32位的MFC中無效。 ·

CFile::typeText 設定成對回車換行對有特殊處理的文本模式(僅用在派生類中)。 ·

CFile::typeBinary 設定二進制模式(僅用在派生類中) 。

舉例

參照下面的例子:

VC++:

TCHAR* pszFileName = _T("c:\\test\\myfile.dat");

CFile myFile;

CFileException fileException;

if ( !myFile.Open( pszFileName, CFile::modeCreate | CFile::modeReadWrite, &fileException ) )

{

TRACE( _T("Can't open file %s, error = %u\n"),

pszFileName, fileException.m_cause );

}

大家常用的從檔案中讀寫字元串的類CStdioFile就是從CFile派生出的,因此CStdioFile類的對象也可以直接調用Open方法來打開一個對象,參看以下例子:

CString csExt;

CStdioFile Rfile(_T("C:\\myfiles\\myfile1.txt"),CFile::modeRead); //定義並初始化一個CStdioFile類的對Rfile

//一行一行的讀入字元串

while(Rfile.ReadString(csExt))

{

TRACE(_T("%s\n"),csExt);

}

Rfile.Close();

返回值

成功返回非0值,否則返回0。只有返回值為0時,pError參數才有意義。

相關詞條

熱門詞條

聯絡我們