日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC文件操作

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC文件操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件的操作分為兩步,打開和讀寫。

  打開和讀寫對應著兩個類,分別 CFileDialog 和 CFile.

 

第一步? 打開文件對話框操作:

  (1) 文件對話框類    CFileDialog  

  

  (2) 構造方法      CFileDialog::CFileDialog();

  CFileDialog::CFileDialog(?BOOL?bOpenFileDialog,?LPCTSTR?lpszDefExt?=?NULL,?LPCTSTR?lpszFileName?=?NULL,

              DWORD?dwFlags?=?OFN_HIDEREADONLY?|?OFN_OVERWRITEPROMPT,

              LPCTSTR?lpszFilter?=?NULL,?CWnd*?pParentWnd?=?NULL?);

  參數介紹:

    bOpenFileDialog    為TRUE則顯示打開對話框,為FALSE則顯示保存對話文件對話框。

    lpszDefExt       指定默認的文件擴展名。 如"jpg"。
    lpszFileName      指定默認的文件名。 如"*.jpg"。

    dwFlags         指明一些特定風格。如:dwFlags?=?OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT。

                OFN_HIDEREADONLY?      隱藏只讀復選框。

                OFN_OVERWRITEPROMPT?   如果選擇的文件已經存在,使用另存為對話框產生一個消息框;

                                 用戶必須確認是否復蓋這個文件。

    lpszFilter        是很重要的一個參數,它指明可供選擇的文件類型和相應的擴展名。參數格式如:

                "jpg Files (*.jpg)|*.jpg|bin Files (*.bin)|*.bin|All Files (*.*)|*.*||";

                文件類型說明和擴展名間用 | 分隔,每種文件類型間用 | 分隔,末尾用 || 指明。

    pParentWnd       為父窗口指針,一般為空。

?

  (3) 打開對話框方法    CFileDialog::DoModal(); 用來打開對話框。

?

  (4) 取得完整文件名方法  CFileDialog::GetPathName();

               得到完整的文件名,包括目錄名和擴展名如:c:\test\test1.txt。

  

構造和打開對話框用例: 

  char szFilters[]="jpg Files (*.jpg)|*.jpg|bin Files (*.bin)|*.bin|All Files (*.*)|*.*||";
  CFileDialog fileDlg(TRUE, "jpg", "*.jpg",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilters, NULL);

  if( fileDlg.DoModal ()==IDOK )                      //此時,才真正彈出對話框。
  {
    gReadFilePathName = fileDlg.GetPathName();            //得到完整的文件名、目錄和擴展名。
    GetDlgItem(IDC_EDIT1)->SetWindowText(gReadFilePathName);  //將文件名、目錄和擴展名寫回窗口。  
  }

?

?

第二步? 讀寫文件操作:    

  (1) 文件類        CFile

?

  (2) 構造方法       CFile::CFile();

  CFile::CFile(?LPCTSTR?lpszFileName,?UINT?nOpenFlags?);?

  lpszFileName      文件名

  nOpenFlags?       打開方式,有:

              CFile::modeCreate:以新建方式打開,如果文件不存在,新建;

                         如果文件已存在,把該文件長度置零,即清除文件原有內容。

              CFile::modeRead:只讀。
              CFile::modeWrite:只寫。
              CFile::modeReadWrite:以讀寫方式打開文件。

              CFile::modeNoTruncate:以追加方式打開,如果文件存在,打開并且不將文件長度置零,如果文件不存在,會拋出異常。

                            一般與CFile::modeCreate一起使用,則文件不存在時,新建一個文件;存在就進行追加操作。

  用例如下:

    CFile ReadFile(gReadFilePathName,CFile::modeRead);

    CFile SaveFile(gSaveFilePathName,CFile::modeCreate|CFile::modeWrite);

?

  (3) 只讀方法      CFile::Read();

  CFile::Read(?void*?lpBuf,?UINT?nCount?);?  從lpBuf指向的地址開始讀取nCount?個字節,指針也自動下移nCount?.

  lpBuf          文件指針

  nCount?         字節數

  用例如下:

    unsigned char?temp;

    ReadFile.Read(&temp,1);

?

  (4) 只寫方法      CFile::Write();

  CFile::Write(?const?void*?lpBuf,?UINT?nCount?);?  向lpBuf指向的內存地址寫入nCount?個字節,指針也自動下移nCount?.

  lpBuf          文件指針

  nCount?         字節數

  用例如下:

    ?char?ChangRun[2] = {'\r','\n'};

    SaveFile.Write(ChangRun,2);

?

  (5) 定位方法      CFile::Seek();

  CFile::Seek(?LONG?lOff,?UINT?nFrom?);    從指定位nFrom置偏移lOff字節.

  nFrom?         有三種方式,如:

               CFile::begin?    從文件開始移動

               CFile::current    從當前位置移動

               CFile::end?    ?? 從文件末位移動,此時lOff為負值.

  用例如下:

    SaveFile.Seek(2,CFile::current);


?完。

總結

以上是生活随笔為你收集整理的MFC文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。