Delphi文件访问 – 如果我不关闭文件,为什么输出不完整?
发布时间:2020-12-15 09:40:41 所属栏目:大数据 来源:网络整理
导读:下面是一个简单的控制台应用程序,然后生成10组3个随机数,并将它们打印到控制台窗口和文本文件“Output.txt”. program Project1;{$APPTYPE CONSOLE}{$R *.res}uses System.SysUtils;var outputFile: TextFile; i: Integer; a,b,c: Single;begin try Randomiz
下面是一个简单的控制台应用程序,然后生成10组3个随机数,并将它们打印到控制台窗口和文本文件“Output.txt”.
program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; var outputFile: TextFile; i: Integer; a,b,c: Single; begin try Randomize; AssignFile(outputFile,'Output.txt'); ReWrite(outputFile); for i := 0 to 9 do begin a := Random; b := Random; c := Random; WriteLn(FloatToStr(a) + Char(9) + FloatToStr(b) + Char(9) + FloatToStr(c)); WriteLn(outputFile,FloatToStr(a) + Char(9) + FloatToStr(b) + Char(9) + FloatToStr(c)); end; Close(outputFile); Sleep(10000); except on E: Exception do Writeln(E.ClassName,': ',E.Message); end; end. 仅当我包含第26行时,文本文件才包含与控制台窗口相同的信息:
如果我从代码中省略了这一点,我希望无论如何都能将相同的数据打印到文本文件中,但实际打印在文本文件中的内容与前9行相同,然后是不完整的最终行. 为什么会这样?由于省略了Close程序,最后一行只能通过什么过程写入? 解决方法
这是因为文件输出是缓冲的.当您关闭文件时,它会刷新缓冲区并将剩余的内容输出到磁盘.
另一种方法是在WriteLn之后对文件执行Flush(outputFile),它将完成同样的事情,但代价是性能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |