我正在使用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()
之后,文件保持不变。
为什么?非常感谢!
答案 0 :(得分:1)
我认为MSDN略微误解了这个问题。当您调用Seek时,文件指针被调整,但磁盘上的实际文件尚未更改。如果你之后调用Write,那么实际文件将成为稀疏文件(在NTFS上)或更长的文件(在FAT上),具有预期的长度。
似乎没有任何明确的规则。