質問

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の場合)になります。

明確なルールはないようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top