1、相关类
CFile类 -封装了文件句柄以及操作文件的API函数
CFileFind类 -封装了文件搜索功能
2、CFile类的使用
2.1文件读写
1)创建或者打开文件
CFile::Open
virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );
lpszFileName:指定文件的名称;
nOpenFlags:指定文件共享和访问的方式,包括:
CFile::modeCreate --创建新文件,如果该文件已存在,则将它的长度截断为0;
CFile::modeNoTruncate --与CFile::modeCreate合用,如果要创建的文件已存在,它的长度不会被截断;
CFile::modeRead --打开文件,仅用于读操作;
CFile::modeReadWrite --打开文件,可读可写;
CFile::modeWrite --打开文件,仅用于写操作;
CFile::modeNoInherit --禁止子进程继承该文件;
CFile::shareDenyNone --打开文件,同时并不拒绝其他进程对该文件的读取和写入访问;如果该文件已经被其他进程以兼容模式打开,则函数调用失败;
CFile::shareDenyRead --打开文件,并拒绝其他进程对该文件的读取访问;
CFile::shareDenyWrite --打开文件,并拒绝其他进程对该文件的写入访问;
CFile::shareExclusive --以独占模式打开,拒绝其他进程对该文件的读取和写入访问;
CFile::typeText --设置文本模式,带有一对回车换行字符;
CFile::typeBinary --设置二进制模式;
2)文件读写
CFile::Read
virtual UINT Read( void* lpBuf, UINT nCount );
lpBuf:指向用来接收从文件中读取的数据的缓冲区的指针;
nCount:要从文件中读取的最大字节数;
CFile::Write
virtual void Write( const void* lpBuf, UINT nCount );
lpBuf:指向将要被写入文件的数据;
nCount:将要写入的数据的字节数;
CFile::Flush --刷新缓冲区中的数据并将其写入磁盘文件中
virtual void Flush();
3)关闭文件
CFile::Close
virtual void Close();
2.2文件长度的获取和设置
CFile::GetLength
CFile::SetLength
2.3文件的指针
CFile::GetPosition --获得当前文件指针的位置
virtual DWORD GetPosition( ) const;
CFile::Seek
virtual LONG Seek( LONG lOff, UINT nFrom );
lOff:将移动文件指针多少个字节数;
nFrom:移动文件指针的起始位置,包括:
CFile::begin
CFile::current
CFile::end
CFile::SeekToBegin
CFile::SeekToEnd
2.4文件相关属性的读取和设置
1)CFile::GetStatus
2)CFile::SetStatus
3)CFile::GetFileName
4)CFile::GetFileTitle
5)CFile::GetFilePath
6)CFile::SetFilePath
7)CFile::Rename
8)CFile::Remove
注意:1、文件读写需要异常处理
2、注意文件的指针位置
例:
CFile file; file.Open("1.txt", CFile::modeCreate | CFile::modeWrite); file.Write("hello world!", strlen("hello world!")); file.Close();
CFile file; file.Open("1.txt", CFile::modeRead); char *pBuf; DWORD dwFileLen; dwFileLen = file.GetLength(); pBuf = new char[dwFileLen + 1]; pBuf[dwFileLen] = 0; file.Read(pBuf, dwFileLen); file.Close(); MessageBox(pBuf);
3、CFileFind类的使用
3.1开始查找(指定查找的目录)
CFileFind::FindFile
3.2查找下一个(获取当前文件信息,返回下一个文件是否存在)
CFileFind::FindNextFile
3.3获取/判断文件信息
CFileFind::GetXXX/IsXXX
3.4结束查找
CFileFind::Close
例子:1-查找C:根目录下的文件和文件夹
2-查找整个C:盘下的文件和文件夹