飞鸽传书 需要大量地对文件进行操作,这个过程必须用到的MFC类CFile,下面详细说明这个类的使用方法:
CFile提供了一些常用的操作函数,如表1-2所示。
| 表1-2 CFile操作函数 | |
| 函数 | 含义 |
| Open | 打开文件 |
| Close | 关闭文件 |
| Flush | 刷新待写的数据 |
| Read | 从当前位置读取数据 |
| Write | 向当前位置写入数据 |
| GetLength | 获取文件的大小 |
| Seek | 定位文件指针至指定位置 |
| SeekToBegin | 定位文件指针至文件头 |
| SeekToEnd | 定位文件指针至文件尾 |
| GetFileName | 获取文件名,如:“NOTEPAD.EXE” |
| GetFilePath | 获取文件路径,如:“C:\WINDOWS \NOTEPAD.EXE” |
| GetFileTitle | 获取文件标题,如:“NOTEPAD” |
| GetPosition | 获取当前文件指针 |
| GetStatus | 获取当前文件的状态,返回一个CFileStatus |
| #Remove | 静态方法,删除指定文件 |
| #Rename | 静态方法,重命名指定文件 |
注意最后两个静态函数,其实它们封装了Windows API中关于文件管理的函数。
使用CFile操作文件的流程如下:
构造一个CFile对象。
调用CFile::Open()函数创建、打开指定的文件。
调用CFile::Read()和CFile::Write ()进行文件操作。
调用CFile::Close()关闭文件句柄。
文件指针的位置设置可以使用:
Seek( LONG lOff, UINT nFrom ) 把文件指针移动到指定位置
lOff :是指针偏移字节数,若向后偏移则为正数,若向前偏移,则为负数。
nFrom :MSDN上有三种取值:
CFile::begin 从文件开头开始算起,lOff为正数;
CFile::current 当前位置开始算起;
CFile::end 从文件结尾开始算起,lOff为负数;
SeekToBegin( ) 把文件指针移到文件开头
SeekToEnd( ) 把文件指针移到文件末尾
GetPosition( ) 返回当前文件指针的位置
获取文件的字节数可用 GetLength( ) 此函数的返回值为DWORD,但可直接用来分配数组元素数目,例如:
DOWRD len=file.GetLength();
char *pBuf=new char[len+1] / int *pBuf=new int[len/4]
char占一个字节,int占四个字节。
写入文件:
CFile file;
file.Open("E:\\VC\\1.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate,NULL);
file.Write("HelloWorld",strlen("HelloWorld"));
//Write( const void* lpBuf, UINT nCount ) lpBuf是写入数据的Buf指针,nCount是Buf里需要写入文件的字节数
file.close( );
读取文件:
CFile file;
file.Open("E:\\VC\\1.txt",CFile::modeRead,NULL);
DWORD len=file.GetLength( );
char Buf[len+1];
Buf[len]=0; //0终止字符串,用于输出。
file.Read(Buf,len); //Read( void* lpBuf, UINT nCount ) lpBuf是用于接收读取到的数据的Buf指针nCount是从文件读取的字节数
MessageBox(Buf);
本文介绍了MFC中的CFile类及其常用操作函数,包括文件的打开、关闭、读写等,并提供了具体的使用流程和示例代码。
386

被折叠的 条评论
为什么被折叠?



