sel*_*wyn 5 windows windows-xp disk
当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社区注释.
您还没有指定开发环境,因此:
IO 流有一个.Flush方法可以完成您想要的操作。
有一个FlushFileBuffers调用,它以文件句柄作为参数。
编辑(基于 OA 的评论):FlushFileBuffers 不需要管理权限;仅当传递给它的句柄是卷的句柄而不是单个文件的句柄时,它才会执行此操作。
| 归档时间: |
|
| 查看次数: |
16626 次 |
| 最近记录: |