我要写入文件并立即刷新到磁盘。
有关SO的其他问题指出,Flush(True)在.NET 4.0上不可靠。我确实在使用.NET 4.0,并且无法在任何时间进行升级。
FlushFileBuffers是否可靠?还是也知道有错误?
我是否可以使用一个选项,还是应该同时使用并希望达到最佳状态?
答案 0 :(得分:0)
我猜您正在谈论的“错误”是this one:
.NET Framework 4.0引入了新的 FileStream.Flush(bool flushToDisk)重载。 如果flushToDisk设置为true,则应将更改提交到磁盘。
但是,在许多情况下(如果内部缓冲区指针为0)更改不会提交到磁盘,并且Flush(true)调用绝对不执行任何操作。
如果应用程序依赖于FileStream.Flush(true)的工作,可能会导致数据损坏问题。
但是根据Is there an official fix (aka KB) for the FileStream.Flush bug introduced in .Net 4,该问题已通过4.0.3修复:
...据我所知,即使在KB中未提及,它也已在.NET Framework Update 4.0.3中修复。