TFileStream.Seek超出文件末尾

时间:2011-02-08 09:43:04

标签: delphi winapi delphi-2007

我们刚刚在Delphi 2007中遇到了TFileStream.Seek(实际上该方法是从THandleStream继承)的特殊行为:

您可以在文件末尾搜索而不会出现错误,在搜索之后您甚至可以从文件中读取而不会出现错误。

代码基本上只调用Windows API函数SetFilePointer,似乎做了正确的错误处理。有人能解释一下这里发生了什么吗?

2 个答案:

答案 0 :(得分:9)

SetFilePointer州的MSDN文档:

  

设置文件不是错误   指向超越结束位置的指针   的文件。文件的大小   直到你打电话给你才会增加   SetEndOfFile,WriteFile或   WriteFileEx函数。一个写   操作增加了大小   文件到文件指针位置加   写入的缓冲区的大小,其中   导致中间字节   初始化。

这就是文件系统的工作方式。

答案 1 :(得分:3)

支持NTFS稀疏文件需要Afaik这种行为(寻求超越结束,写入块)。