共用方式為


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 格式。 別名不寫入檔案。

只選取下列其中一個檔案共用方式選項。 預設的檔案共用模式是 CFile::shareExclusive,是獨佔的。

描述

CFile::shareDenyNone

沒有共用的限制。

CFile::shareDenyRead

拒絕存取其他的讀取權限。

CFile::shareDenyWrite

拒絕存取其他的寫入權限。

CFile::shareExclusive

拒絕存取其他的讀取和寫入權限。

選取第一個或兩者,下列檔案建立模式選項。 預設的建立方式是 CFile::modeNoTruncate,已存在。

描述

CFile::modeCreate

如果檔案不存在,則建立新檔案,否則,因此,如果檔案已存在,則會附加至 CFile 物件和會截斷為 0 長度。

CFile::modeNoTruncate

如果檔案不存在,則建立新檔案,否則,因此,如果檔案已存在,則會附加至 CFile 物件。

選取下列檔案快取選項 (如中所述。 根據預設,系統會使用不可選取的一般用途快取配置。

描述

CFile::osNoBuffer

系統不會為檔案使用中繼快取。 這個選項會移除下列 2 個選項。

CFile::osRandomAccess

檔案快取為隨機存取最佳化。 不要使用這個選項和連續掃描選項。

CFile::osSequentialScan

檔案快取的循序存取最佳化。 不要使用這個選項與這個隨機存取的選項。

CFile::osWriteThrough

寫入作業清除快執行。

選取下列安全性選項導致檔案控制代碼 (File Handle) 繼承。 根據預設,所有新的子處理序可以使用檔案控制代碼。

描述

CFile::modeNoInherit

防止所有子處理序中使用檔案控制代碼。

預設建構函式初始化成員,而不是將檔案附加至 CFile 物件。 在使用這個建構函式之後,請使用方法 CFile::Open 開啟檔案並將它附加至 CFile 物件。

具有一個參數的建構函式會初始化成員並附加至現有的檔案到 CFile 物件。

具有兩個參數的建構函式會初始化成員並嘗試開啟指定的檔案。 如果這個建構函式已順利開啟指定的檔案,檔案會附加至物件, CFile 否則,這個建構函式會擲回指標 CInvalidArgException 物件。 如需如何處理例外狀況的詳細資訊,請參閱 例外狀況

如果 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

請參閱

參考

C 檔案類別

階層架構圖