MFC文件读写操作

Posted Autumn の Box

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC文件读写操作相关的知识,希望对你有一定的参考价值。

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:盘下的文件和文件夹

 

  

 

以上是关于MFC文件读写操作的主要内容,如果未能解决你的问题,请参考以下文章

MFC文件的读写操作,类的序列化与反序列化,CFile,CFileDialog,CArchive,CStdioFile

MFC读写文件

MFC对话框连接一个数据库.mdb文件并对其读写。

vc的txt文件的读写操作

MFC文件操作

如何用MFC打印指定excel