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

请参见

参考

CFile Class

层次结构图