ファイルの読み書き
C ランタイム ライブラリのファイル処理関数を使用している場合、MFC の読み取りと書き込みの操作についてはよく理解できると思います。 この記事では、CFile
オブジェクトに対する直接的な読み取りおよび書き込み操作について説明します。 また、CArchive クラスを使用して、バッファーに入れられたファイルの入出力を行うこともできます。
ファイルに対する読み取りと書き込みを行うには
ファイル内のデータの読み取りと書き込みを行うには、
Read
メンバー関数とWrite
メンバー関数を使用します。または
Seek
メンバー関数は、ファイル内の特定のオフセットに応じて移動するためにも使用できます。
Read
は、バッファーへのポインターと、読み取るバイト数を取得し、読み取られた実際のバイト数を返します。 ファイルの終わり (EOF) に到達したために必要なバイト数を読み取れなかった場合は、実際に読み取られたバイト数が返されます。 読み取りエラーが発生した場合は、例外がスローされます。 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 ) );
}
Note
通常は、try
/catch
例外処理ブロック内で入出力操作を実行する必要があります。 詳細については、「例外処理 (MFC)」を参照してください。