質問
MFC CFile Seek関数を使用しています。 ファイルの長さのシークに関する問題があります。
CFile cfile;
BOOL bResult = cfile.Open(
L"C:\\2.TXT",
CFile::modeReadWrite |
CFile::modeCreate |
CFile::modeNoTruncate |
CFile::typeBinary |
CFile::shareDenyNone);
cfile.Seek(10000, CFile::End);
cfile.Close();
MSDN: 備考
Seek関数はランダムを許可します 移動によるファイルのコンテンツへのアクセス 指定された量のポインタ、 絶対的または比較的。データなし 実際にシーク中に読み取ります。もし 要求された位置は ファイルのサイズ、ファイルの長さは その位置まで延長される 例外がスローされます。
MSDNによると、ファイルの長さが延長されます。
ただし、 cfile.Close()
の後、ファイルは同じままです。
どうしてですか?どうもありがとう!
解決
MSDNは問題をわずかに誤解したと思います。 Seekを呼び出すと、ファイルポインターは調整されますが、ディスク上の実際のファイルはまだ変更されていません。その後Writeを呼び出すと、実際のファイルは予想される長さで、スパースファイル(NTFSの場合)またはより長いファイル(FATの場合)になります。
明確なルールはないようです。
所属していません StackOverflow