以前に開いたファイル ポインターの位置を変更します。
virtual ULONGLONG Seek(
LONGLONG lOff,
UINT nFrom
);
パラメーター
lOff
ポインターを移動するバイト数。nFrom
実行モードのポインター。次の値のいずれかである必要があります: 1CFile::begin: ファイルの先頭からファイル ポインターの lOff のバイトを前方に移動します。
CFile::current: ファイルの現在位置から、ファイル ポインターの lOff バイトを実行します。
CFile::end: ファイルの末尾からファイル ポインターの lOff バイトを実行します。lOff が既存のファイルを検索する数値が負であることに注意してください; 正の値はファイルの末尾を超えて検索します。
戻り値
要求された位置が有効な場合、Seek はファイルの先頭から新しいバイト オフセットを返します。それ以外の場合、戻り値は未定義です CFileException のオブジェクトがスローされます。
解説
Seek 関数は、指定されたポインターを移動してファイルの内容へのランダム アクセスを、絶対または比較的できます。データがシーク中に実際にに読み込まれません。要求された位置がファイルのサイズよりも大きい場合、ファイルの長さはその位置に拡張され、例外はスローされません。
ファイルを開くときに、ファイル ポインターはファイルの先頭オフセット 0 に設定されます。
Seek のこの実装はランタイム ライブラリ (CRT) 関数 fseekに基づいています。テキスト モードで開かれたストリームの Seek を使用すると、次の制限があります。詳細については、「fseek、_fseeki64」を参照してください。
使用例
次の例に cfile ファイルの先頭からポインターを移動します Seek を使用する方法を 1000 バイト示します。Seek がデータを読み取るため、従ってデータを読み取るためにを呼び出す必要があります CStdioFile::ReadString ことに注意してください。
CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);
必要条件
ヘッダー : afx.h