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