1 MFC文件相关
CFile-父类是CObject,封装了文件操作的API,提供了文件创建以及读写操作。CFileFind-文件搜索,父类也是CObject。文件查找操作
2 CFile的使用
2.1 打开或者创建文件CFile::Open
2.2 数据读写 CFile::Read/Write
2.3 文件的关闭 CFile::Close
2.4 文件指针CFile::SeekToBegin;CFile::SeekToEnd;CFile::Seek
2.5 CFile::Flush-强制将缓冲区的数据写入到硬盘文件Buffer-文件缓冲区。 执行文件关闭操作CFile::Close,系统会自动调用Flush函数。
2.6 LockRange/UnLockRange当多个程序同时操作一个文件时,可以锁定指定位置和字节数量的文件区域,这个区域的数据,其它程序不能修改,解锁后才可以修改。
2.7 CFile::GetStatus/SetStatus获取/设置文件的状态信息,保存在CFileStatus结构中
3 CFileFind-文件查找
3.1 FindFile-开始查找
3.2 FindNextFile-查找下一个,依次遍历查找结果调用一系列的GetXXX函数,获取文件信息;或者调用一系列的IsXXX函数,判断文件的信息
3.3 Close-关闭查找
新建MFC的MFCFile工程,删除掉自动生成的文件,并设置 属性->链接器->系统->子系统 控制台 (/SUBSYSTEM:CONSOLE)
#include "stdafx.h" CWinApp theApp; void File() { CFile file; BOOL bRet=file.Open(L"c:\\mfcfile.txt",CFile::modeCreate|CFile::modeReadWrite);//打开或者创建文件 if (!bRet) { return; } try {//文件读写 char str[]="Hello CFile"; file.Write(str,strlen(str)); file.SeekToBegin(); char szText[128]={0}; file.Read(szText,128); printf("%s\n",szText); } catch (CFileException* e) { } file.Close();//关闭文件 } void Statu() { CFileStatus status; CFile::GetStatus(L"c:\\mfcfile.txt",status); //获取文件状态的信息,保存到status中 CTimeSpan span(366,0,0,0); status.m_ctime-=span;//把创建的时间改成去年 CFile::SetStatus(L"c:\\mfcfile.txt",status);//设置文件的状态信息 } void Find(CString strPath) { CFileFind find; BOOL bFind=find.FindFile(strPath+"*.*");//开始查找 while(bFind) { bFind=find.FindNextFileW(); CString strName=find.GetFileName();//获取文件名称 strPath=find.GetFilePath();//获取路径 if (find.IsDirectory()&& !find.IsDots()) { wprintf(L"Derectory:%s\n",strName); Find(strPath+L"\\*.*"); } else { wprintf(L"file: %s\n",strName); } } find.Close();//结束查找 } void main() { File(); Statu(); Find(L"c:\\COMRaider\\"); }