CFile::CFile
建構並初始化 CFile 物件。
CFile( ); CFile( CAtlTransactionManager* pTM ); CFile( HANDLE hFile ); CFile( LPCTSTR lpszFileName, UINT nOpenFlags ); CFile( LPCTSTR lpszFileName, UINT nOpenFlags, CAtlTransactionManager* pTM );
參數
hFile
要連結至 CFile 物件的檔案控制代碼。lpszFileName
要連結至 CFile 物件的檔案相對或完整路徑。nOpenFlags
指定檔案之檔案存取選項的位元組合 (OR)。 如需可能的選項,請參閱<備註>一節。pTM
CAtlTransactionManager 物件的指標
備註
下列五個表格會列出 nOpenFlags 參數的可能選項。
請僅選擇下列其中一個檔案存取模式選項。 預設檔案存取模式為 CFile::modeRead,其是唯讀的。
值 |
描述 |
---|---|
CFile::modeRead |
僅要求讀取權限。 |
CFile::modeWrite |
僅要求寫入權限。 |
CFile::modeReadWrite |
要求讀取和寫入權限。 |
請選擇下列其中一個字元模式選項。
值 |
描述 |
---|---|
CFile::typeBinary |
設定二進位模式 (僅在衍生的類別中使用)。 |
CFile::typeText |
設定文字模式,對歸位字元與換行字元配對進行特殊處理 (僅在衍生類別中使用)。 |
CFile::typeUnicode |
設定 Unicode 模式 (僅在衍生的類別中使用)。 當應用程式在 Unicode 組態中建置時,文字會以 Unicode 格式寫入檔案。 不會將 BOM 寫入檔案。 |
請僅選擇下列其中一個檔案共用模式選項。 預設檔案共用模式為 CFile::shareExclusive,其是獨佔的。
值 |
描述 |
---|---|
CFile::shareDenyNone |
無共用限制。 |
CFile::shareDenyRead |
拒絕所有其他項目的讀取權限。 |
CFile::shareDenyWrite |
拒絕所有其他項目的寫入權限。 |
CFile::shareExclusive |
拒絕所有其他項目的讀取及寫入權限。 |
請選擇下列檔案的第一個,或兩者都選,以建立模式選項。 預設建立模式為 CFile::modeNoTruncate,其為開啟現有項目。
值 |
描述 |
---|---|
CFile::modeCreate |
如果檔案不存在,則建立新檔案;如果檔案已經存在,則引發 出CFileException。 |
CFile::modeNoTruncate |
如果檔案不存在,則建立新檔案;否則,如果檔案已經存在,則連結至 CFile 物件。 |
請按照所述,選擇下列檔案快取選項。 根據預設,系統會使用尚未做為選項提供的一般目的快取配置。
值 |
描述 |
---|---|
CFile::osNoBuffer |
系統不會對檔案使用間歇性快取。 此選項會取消下列 2 個選項。 |
CFile::osRandomAccess |
檔案快取針對隨機存取最佳化。 請勿使用此選項及循序掃描選項。 |
CFile::osSequentialScan |
檔案快取針對循序存取最佳化。 請勿使用此選項及隨機存取選項。 |
CFile::osWriteThrough |
無延遲執行寫入作業。 |
選擇下列安全選項,以防止繼承檔案控制代碼。 根據預設,任何新子處理序都可以使用檔案控制代碼。
值 |
描述 |
---|---|
CFile::modeNoInherit |
防止任何子處理序使用檔案控制代碼。 |
預設建構函式會初始化成員,但不會將檔案連結至 CFile 物件。 使用此建構子之後,請使用 CFile::Open 方法,來開啟檔案,並將其連結至 CFile 物件。
具有一個參數的建構函式會初始化成員,並將現有檔案連結至 CFile 物件。
具有兩個參數的建構函式會初始化成員,並嘗試開啟指定的檔案。 如果此建構函式成功開啟指定的檔案,則該檔案會連結至 CFile 物件;否則,此建構函式會擲回指向 CInvalidArgException 物件的指標。 如需如何使用處理例外狀況的詳細資訊,請參閱例外狀況。
如果 CFile 物件成功開啟指定的檔案,則它會在 CFile 物件終結時,自動關閉此檔案;否則,您必須在該檔案不再連結至 CFile 物件之後,明確關閉該檔案。
範例
下列程式碼顯示如何使用 CFile。
HANDLE hFile = CreateFile(_T("CFile_File.dat"),
GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("Couldn't create the file!"));
}
else
{
// Attach a CFile object to the handle we have.
CFile myFile(hFile);
static const TCHAR sz[] = _T("I love CFile!");
// write string
myFile.Write(sz, sizeof(sz));
// We can call Close() explicitly, but the destructor would have
// also closed the file for us. Note that there's no need to
// call the CloseHandle() on the handle returned by the API because
// MFC will close it for us.
myFile.Close();
需求
標頭: afx.h