我正在 Delphi 2006 中使用 TFileStream。当我使用超出范围的偏移量调用 TFileStream.Seek 时,我得到不同的返回值。当我寻找到流开头下方的位置时,该函数返回 -1,如果我寻找超出流大小的位置,该函数将返回流中的位置(如果流那么大)。有没有办法检查流上的查找操作是否成功?当查找偏移量超出当前流大小的范围时,为什么 TFileStream.Seek 不会失败?
提前致谢。
是的,您可以超出文件大小进行查找 - 如果此处没有错误,则查找成功。不仅如此,您还可以锁定文件区域(请参阅LockFile http://msdn.microsoft.com/en-us/library/aa365202(VS.85).aspx)超出文件大小 - 这也可以,并且某些 RDBMS 使用它来实现表/记录锁定。
同样来自 MSDN:
不是设置文件错误
指向超出末尾的位置的指针
文件的。文件的大小确实
在您调用之前不会增加
SetEndOfFile、WriteFile 或
WriteFileEx 函数。一个写
操作增加了的大小
文件到文件指针位置加上
写入的缓冲区的大小,其中
结果是中间字节
未初始化。
因此,通过设置超出文件大小的文件指针,您可以随后增加文件大小(例如通过 SetEndOfFile)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)