当Windows XP和Vista中的磁盘策略设置为在硬盘上启用写入缓存时,是否有办法刷新刚刚写入的文件,并确保它已提交到磁盘?
我想在C++中以编程方式执行此操作.
关闭文件会在应用程序级别执行刷新,但不会在操作系统级别执行刷新.如果在关闭文件后从PC中断电,但在操作系统刷新磁盘写入缓存之前,文件将丢失,即使它已关闭.
.NET FileStream.Flush()不会刷新该文件内容的Windows缓存; Flush()仅刷新.NET内部文件缓冲区.在.NET 4.0中,Microsoft通过向Flush()添加可选参数来解决此问题,如果设置为true则会调用FlushFileSystemBuffers.在.NET 3.5及更低版本中,您唯一的选择是通过pinvoke调用FlushFileBuffers.有关如何执行此操作,请参阅MSDN的FileStream.Flush社区注释.