关于CFile Seek的问题
我正在使用 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();
微软软件定义网络: 评论
Seek 功能允许随机 通过移动来访问文件的内容 指针指定的量, 绝对或相对。没有数据是 在查找过程中实际读取。如果 请求的位置大于 文件大小,文件长度将 延伸到那个位置,并且没有 将抛出异常。
根据MSDN,文件长度将会延长。 然而,在cfile.Close()
之后,文件保持不变。 为什么?非常感谢!
I am using MFC CFile Seek function.
I have a problem about Seek out of file length.
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:
Remarks
The Seek function permits random
access to a file's contents by moving
the pointer a specified amount,
absolutely or relatively. No data is
actually read during the seek. If the
requested position is larger than the
size of the file, the file length will
be extended to that position, and no
exception will be thrown.
According to MSDN, the file length will be extended.
However after cfile.Close()
, the file remains the same.
Why?Many thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为 MSDN 对此事的表述略有错误。当您调用 Seek 时,文件指针已调整,但磁盘上的实际文件尚未更改。如果您在此之后调用 Write,则实际文件将成为具有预期长度的稀疏文件(在 NTFS 上)或更长的文件(在 FAT 上)。
好像没有什么明确的规则。
I think MSDN misstated the matter slightly. When you call Seek the file pointer is adjusted, but the actual file on the disk doesn't change yet. If you call Write after that, then the actual file will become a sparse file (on NTFS) or a longer file (on FAT), with the expected length.
There don't seem to be any definite rules.