0%

MFC-CFile

CFile

MFC是出了名的方便,因为他和java一样封装了许许多多的类,方便了我们在程序编写的时候方便的进行调用。
这篇博客记录一下CFile类的一些使用方法,环境就是MFC的一个类库支持。
这个类库支持异常的一些处理:

1
2
3
4
5
6
7
8
9
CFile file;
CFileException e;
if (file.Open("File.txt",CFile::modeReadWrite,&e))
{

}else
{
e.ReportError();//打印一下异常
}

当然也是可以这个样子写的:

1
2
3
4
5
6
7
8
9
CFile file;
try
{
file.Open("File.txt",CFile::modeReadWrite);
}
catch (CFileException* e)
{
e->ReportError();//打印一下异常
}

很是方便,而且是通过信息框的方式进行打印。
方便的不仅如此,比如说我们没有这个txt的情况下进行写入,正常情况下我们需要判断是否有这个txt,然后没有的话呢就生成然后在写入,但是CFile这个类的话呢不需要,我们只需要写就好了,例如下面:

1
2
3
4
5
CFile file("ReadMe.txt",CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate);
/*
这个位置操作文件
*/
file.Close();//方便其他程序可以读取

这里需要注意的是,我们指定了一个CFile::modeNoTruncate参数就是说如果我们的txt存在了,我们并不是截断他到0,而是继续写入,这个属性基本上用到Create基本上必须要用到!
如何进行读写呢,看下面示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
char buffer[1024*4];
CFile file("ReadMe.txt",CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate);
DWORD dwSize = file.GetLength();
CString Context;
while(dwSize)
{
UINT real = file.Read(buffer,sizeof(buffer));
Context += buffer;
dwSize -= real;
}
MessageBox(Context);
file.Close();//方便其他程序可以读取

可以看到很是方便!