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