FILE* fp; CString filepath; //filepathにファイルのフルパスを取得する fp = fopen( filepath, "r" ); |
CFile file; CString filepath; char* pBuf; //読み込みバッファ int nCount; //読み込みバイト数 //filepathにファイルのフルパスを取得する //ファイルオープン file.Open( filepath, CFile::modeRead); //ファイル読み込み file.Read(pBuf,nCount); //ファイルクローズ file.Close(); |
CStdioFile stdfile; CString filepath; CString str; //filepathにファイルのフルパスを取得する //ファイルオープン stdfile.Open( filepath, CFile::modeRead); //ファイル読み込み(最初の改行文字まで読み込む) stdfile.ReadString(str); //ファイルクローズ stdfile.Close(); |
それではCStdioFileクラスを使ってファイルを開くサンプルを実装してみます。前回同様にOnFileRead関数に以下のコードを書き加えてください。
void CMeshDoc::OnFileRead() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください CFileDialog filedlg(TRUE //ファイル読み込みモード , "dat" //デフォルトの拡張子 , NULL //デフォルトで指定するファイル名 , OFN_HIDEREADONLY //オプション指定のフラグ , "グリッドファイル(*.dat)|*.dat|すべてのファイル(*.*)|*.*||"); //ファイル名のフィルタ CString path,str; CStdioFile stdfile; if( filedlg.DoModal() == IDOK){ //ダイアログを表示し,OKボタンが押されたならば path = filedlg.GetPathName(); if(stdfile.Open(path,CFile::modeRead)){ //ファイルを正常に開けた場合 stdfile.ReadString(str); stdfile.Close(); AfxMessageBox(str); } else{ AfxMessageBox("ファイルを開くことができませんでした"); } } } |
ビルドして実行してみてください。何か適当なテキストファイルを開くと1行目の文字列が表示されると思います。プログラム中でif文の中にOpenが入っていますが,これは戻り値が正常に開いた場合はTrueを失敗した場合はFalseを返すのを利用して,ファイルをオープンできたかどうかをチェックしています。