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
    按位组合(或)的文件中指定的文件的访问的选项卡。 为可能的选项参见"备注"节。

  • 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

如果文件不存在,创建一个新文件;否则,因此,如果该文件已经存在,则附加到 CFile 对象和被截断为0个长度。

CFile::modeNoTruncate

如果文件不存在,创建一个新文件;否则,因此,如果该文件已经存在,则附加到 CFile 对象。

选择以下文件缓存选项如中所述。 默认情况下,系统使用不能用作选项的泛型缓存模式。

说明

CFile::osNoBuffer

系统不为文件使用中间缓存。 此选项取消以下2个选项。

CFile::osRandomAccess

文件缓存为随机访问进行了优化。 不要使用此选项和顺序扫描选项。

CFile::osSequentialScan

文件缓存的顺序访问进行了优化。 不要使用此选项和随机访问的选项卡。

CFile::osWriteThrough

写入操作赶快执行。

选择以下安全选项将禁止文件句柄继承。 默认情况下,所有新子进程可能使用文件句柄。

说明

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文件选件类

层次结构图