关于CFile Seek的问题

时间:2009-09-15 03:14:28

标签: c++ mfc seek cfile

我正在使用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()之后,文件保持不变。 为什么?非常感谢!

1 个答案:

答案 0 :(得分:1)

我认为MSDN略微误解了这个问题。当您调用Seek时,文件指针被调整,但磁盘上的实际文件尚未更改。如果你之后调用Write,那么实际文件将成为稀疏文件(在NTFS上)或更长的文件(在FAT上),具有预期的长度。

似乎没有任何明确的规则。