国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

CFile文件操作示例

2019-11-14 09:07:22
字體:
來源:轉載
供稿:網友

簡單介紹

CFile是MFC文件類的基類,它直接提供非緩沖的二進制磁盤輸入/輸出設備,并直接地通過派生類支持文本文件和內存文件。CFile與CArchive類共同使用,支持MFC對象的串行化。

該類有三種常見的構造函數,其中一種聲明形式如下:

CFile(LPCTSTR lpszFileName,UINT nOpenFlags);

參數:

   lpszFileName是指定的文件名稱,可以是相對路徑和決定路徑;

   nOpenFlags是指定文件的操作標志,常見有以下幾種,:

CFile::modeCreate         文件已經存在,將它的長度截斷為0;   CFile::modeRead           只讀 CFile::modeReadWrite  可讀寫CFile::modeWrite            只寫

操作示例

我們創建一個單文檔MFC工程,命名為File;并在主菜單中增加File的菜單項,WriteFile和ReadFile是其子菜單,其ID分別是IDM_WRITEFILE和IDM_READFILE,這兩個子菜單時非Popup類型,如下圖所示:

我們在View類中增加這兩個的菜單響應函數,其函數分別命名為OnWriteFile和OnReadFile;

OnWriteFile消息響應函數:

void CFileView::OnWriteFile(){    // TODO: 在此添加命令處理程序代碼    CFile File("test.txt",CFile::modeCreate|CFile::modeReadWrite);        char szBufData[100] = {"hello Word!"};    //寫入文件內容,不包含/0    File.Write(szBufData, strlen(szBufData));    //立即寫入,不緩沖    File.Flush();    //文件操作結束關閉    File.Close();}OnReadFile消息響應函數:

void CFileView::OnReadFile(){    // TODO: 在此添加命令處理程序代碼    CFile File;    CFileException e;    TCHAR* pszFileName = _T("test.txt");    //構造文件,同時增加異常處理    if(!File.Open(pszFileName, CFile::modeRead,&e))    {        CString strErr;        strErr.Format(_T("File could not be opened %d/n"), e.m_cause);        MessageBox(strErr);    }    //創建指定大小的Buffer    DWORD  dwFileLenth = (DWORD)File.GetLength();    //初始化buffer, 增加一個/0空間    char *pBuf = new char[dwFileLenth + 1];    memset(pBuf, 0, dwFileLenth + 1);    if (pBuf != NULL)    {        //讀取文件內容        File.Read(pBuf,dwFileLenth);        File.Close();        //顯示文件內容        MessageBox(pBuf);        //刪除bufer,避免內存泄漏        delete[] pBuf;        pBuf = NULL;    }}OnWriteFile運行結果:

工程目錄下出現test.txt文件,其內容是“hello word!”;

OnReadFile運行結果:

彈出Messagebox對話框,其內容是“hello word!”;

成員函數

數據成員

m_hFile常包含操作系統文件句柄
構造函數
CFile從一個路徑或文件句柄構造一個CFile對象
Abort不管任何警告和錯誤,關閉一個文件
Duplicate構造一個基于該文件的副本
Open帶錯誤檢驗選項,安全打開一個文件
Close關閉文件,刪除對象
輸入/輸出
Read從文件的當前位置讀數據
ReadHuge可從文件的當前位置讀取大于64K數據,在32位編程中廢棄了,見Read
Write將文件數據寫入當前文件位置
WriteHuge可將文件的大于64K數據寫到當前文件位置,在32位編程中廢棄了,見Write
Flush溢去未被寫入的任何數據
定位
Seek定位于當前文件指針
SeekToBegin定位當前文件指針到文件開頭
SeekToEnd定位當前文件指針到文件尾
GetLength獲取文件長度
SetLength改變文件長度
封鎖
LockRange在文件中封鎖一定范圍內的字節
UnlockRange解鎖一定范圍內的字節
狀態
GetPosition獲取當前文件指針
GetStatus獲取打開文件的狀態
GetFileName獲取被選文件的文件名
GetFileTitle獲取被選文件的標題
GetFilePath獲取被選文件的完整路徑
SetFilePath設置被選文件的完整路徑
靜態
Rename改名指定文件(靜態函數)
Remove刪除指定文件(靜態函數)
GetStatus獲取指定文件的狀態(靜態,虛函數)
SetStatus設置指定文件的狀態(靜態,虛函數) 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莱阳市| 临澧县| 上栗县| 四川省| 突泉县| 成安县| 方城县| 天津市| 苗栗市| 抚顺市| 南郑县| 大同市| 肥西县| 武穴市| 桦南县| 抚顺市| 庆安县| 丰县| 新晃| 金乡县| 锡林郭勒盟| 喀什市| 肇庆市| 临沧市| 斗六市| 民丰县| 延庆县| 湟源县| 阿城市| 林甸县| 四子王旗| 上杭县| 杨浦区| 甘孜| 绿春县| 通城县| 金阳县| 隆子县| 怀宁县| 罗平县| 上犹县|