MFC檔案讀寫、相對應的例外處理

檔案讀寫類別

CFile
CMemFile 好的執行效能
│└CShareFile 記憶體中,可以共享檔案
├COleStreamFile
│└ CMonikerFile
│ └ CAsyncMonikerFile
│  └ CDataPathProperty
│   └ CCachedDataPathProperty
├CScoketFile
CStdioFile 有緩衝區 標準輸出入檔案
 └CInternetFile
  ├CGopherfile
  └CHttpFile



CFile
是否新建檔案,開&讀舊檔,唯讀寫,禁止共享(讀或寫)
(使用Win32API)

CStdioFile 可指定文字模式、二進位模式開檔
(使用C語言函式)

讀取的資料量   CStdioFile.Read(指標 讀取資料的記憶體位址, UINT 欲讀取的資料量);


StringRead()的用法類似Read()
除了:
1. 讀取到'\n'結束。
2. 輸出結束自動加上null。
3. 會「回傳(讀取的)記憶體位址」,若讀不到東西回傳null。

讀取資料的記憶體位址   CStdioFile.StringRead(指標 讀取資料的記憶體位址 , UINT 欲讀取的資料量);

BOOL   CStdioFile.StringRead(CString&);



檔案的例外處理類別

CException
CFileException

例外處理範例:


try
{
    CFile MyFile("MyFile.old", CFile::modeRead);
}
catch(CFileException *fx)
{
    TCHAR buf[255];
    fx->GetErrorMessage(buf, 255);
    CString strPrompt(buf);
    AfxMessageBox(strPrompt);
}

或者

CFile MyFile;
CFileException fx;

if(!MyFile.Open("Myfile.old", CFile::modeRead, &fx))
{
    TCHAR buf[255];
    fx.GetErrorMessage(buf, 255);
    CString strPrompt(buf);
    AfxMessageBox(strPrompt);
}

沒有留言:

張貼留言

(什麼是留言欄訊息?)