MFC では、ファイルを開く最も一般的な方法は 2 段階のプロセスです。
ファイルを開くには
パスまたはアクセス許可フラグを指定せずに、ファイル オブジェクトを作成します。
通常、スタック フレームで CFile 変数を宣言して、ファイル オブジェクトを作成します。
パスとアクセス許可フラグを指定して、ファイル オブジェクトの Open メンバー関数を呼び出します。
Open
の戻り値は、ファイルが正常に開かれた場合は 0 以外、指定したファイルを開けなかった場合は 0 になります。Open
メンバー関数は、次のようにプロトタイプ化されます。virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );
開いているフラグは、ファイルに対して必要なアクセス許可 (読み取り専用など) を指定します。 指定できるフラグ値は、
CFile
クラス内で列挙定数として定義されるため、CFile::
のように "CFile::modeRead
" で修飾されます。 ファイルを作成する場合は、CFile::modeCreate
フラグを使用します。
次の例は、読み取り/書き込みアクセス許可を持つ新しいファイルを作成する方法を示しています (前のファイルを同じパスに置き換えます)。
TCHAR* pszFileName = _T("c:\\test\\myfile.dat");
CFile myFile;
CFileException fileException;
if ( !myFile.Open( pszFileName, CFile::modeCreate |
CFile::modeReadWrite, &fileException ) )
{
TRACE( _T("Can't open file %s, error = %u\n"),
pszFileName, fileException.m_cause );
}
注
この例では、ファイルを作成して開きます。 問題が発生した場合、 Open
呼び出しは、次に示すように、最後のパラメーターで CFileException
オブジェクトを返すことができます。 TRACE マクロは、ファイル名と失敗の理由を示すコードの両方を出力します。 より詳細なエラー報告が必要な場合は、 AfxThrowFileException
関数を呼び出すことができます。