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