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