ファイルの読み書き
C ランタイム ライブラリのファイル操作関数を使った経験がある方は、MFC のファイル操作も簡単に行うことができます。 ここでは、CFile オブジェクトを直接読み書きする方法について説明します。 バッファーを通じてファイル入出力を行う場合は、CArchive クラスを使います。
ファイルを読み書きするには
ファイル内のデータを読み書きするには、メンバー関数 Read と Write を使います。
または
オフセットを指定してファイル内を移動するには、メンバー関数 Seek を使います。
Read は、バッファーへのポインターと読み出すバイト数を示す UINT 値を取り、実際に読み出したバイト数を示す UINT 値を返します。 ファイルの末尾 (EOF: end-of-file) に到達して、指定されたバイト数が読み出せないときは、実際に読み出したバイト数を返します。 読み取りエラーが発生したときは、例外がスローされます。 Write は Read と似ていますが、書き込みに成功したバイト数を戻り値として返しません。 書き込みエラーが発生したとき (指定されたバイト数を書き込めなかった場合など) は、例外がスローされます。 有効な CFile オブジェクトに対しては、次の例のように読み書きを行うことができます。
TCHAR szBuffer[256];
UINT nActual = 0;
CFile myFile;
if ( myFile.Open( _T("c:\\test\\myfile.dat"), CFile::modeCreate |
CFile::modeReadWrite ) )
{
myFile.Write( szBuffer, sizeof( szBuffer ) );
myFile.Flush();
myFile.Seek( 0, CFile::begin );
nActual = myFile.Read( szBuffer, sizeof( szBuffer ) );
}
注意
通常、入出力操作は、try/catch 例外処理ブロック内で行います。 詳細については、「例外処理 (MFC)」を参照してください。