首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MoveFile是否确保在磁盘上移动文件?

MoveFile是否确保在磁盘上移动文件?
EN

Stack Overflow用户
提问于 2016-10-20 22:22:22
回答 1查看 168关注 0票数 1

从MSDN我了解到,当你在没有FILE_FLAG_NO_BUFFERING的情况下调用WinApi CreateFile时,WriteFile会将数据写入系统缓存。它不会直接写入物理磁盘。操作系统稍后会将其写入物理磁盘。

我想知道调用MoveFile时会发生什么。是否可以保证在MoveFile调用之后,文件会在物理磁盘上实际移动,或者只会更新系统缓存?

EN

回答 1

Stack Overflow用户

发布于 2016-10-20 22:41:54

如果您想要保证移动已经到达磁盘,可以使用带有MOVEFILE_WRITE_THROUGH标志的MoveFileEx,它确实可以做到这一点。请注意,这可能是一个严重的性能损害(通常很少或没有好处)。

MoveFile本身并不指定如何移动文件。它可能确实会移动,或者可能会复制并删除,并且它可能使用也可能不使用缓冲区缓存。

可以合理地假设它确实使用缓冲区缓存工作,并且“移动”实际上意味着在同一物理磁盘上“移动”。

通常没有太多理由不使用缓冲区缓存,因为除了计算机在操作过程中崩溃或用户拔下外部磁盘上的电缆外,这是完全可靠的事情。这两种情况都很少见。但是,即使它们发生了,灾难性的后果通常也是非常轻微的,并且非常可以容忍,除非您尝试移动包含数万个文件的大型目录(通常,根本没有移动任何文件,或者根据操作模式的不同,您在目标位置有一个完整的原始文件和一个陈旧的文件)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40157142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档