ファイルを開く
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 関数を使うと、さらに詳細な情報を得ることができます。