ファイルを開く
MFC では、ファイルを開くための最も一般的な方法は、2 段階のプロセスです。
ファイルを開くには
パスまたはアクセス許可フラグを指定せずに、ファイル オブジェクトを作成します。
通常、ファイル オブジェクトを作成するには、スタック フレームで CFile 変数を宣言します。
ファイル オブジェクトの Open メンバー関数を呼び出し、パスとアクセス許可フラグを指定します。
Open
の戻り値は、ファイルが正常に開かれた場合は 0 以外の値になり、指定されたファイルを開くことができなかった場合は 0 になります。Open
メンバー関数は、次のようにプロトタイプが宣言されています。virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );
Open のフラグでは、ファイルに必要なアクセス許可 (読み取り専用など) を指定します。 使用可能なフラグ値は、
CFile
クラス内で列挙定数として定義されているため、CFile::modeRead
のように "CFile::
" で修飾されます。 ファイルを作成する場合は、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 );
}
Note
この例では、ファイルを作成して開きます。 問題が発生した場合は、次に示すように、Open
呼び出しは最後のパラメーターで CFileException
オブジェクトを返すことができます。 TRACE マクロは、ファイル名と、エラーの原因を示すコードの両方を出力します。 より詳細なエラー レポートが必要な場合は、AfxThrowFileException
関数を呼び出すことができます。