1. 程式人生 > >MFC文件讀寫操作

MFC文件讀寫操作

名稱 bsp 字節數 null tex 是否 功能 int cfi

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文件讀寫操作