IS System.File.io.Copy Atomic(在复制过程中可以访问/读取另一个过程)



我已经研究了文档https://msdn.microsoft.com/en-us/library/9706cfs5(V=VS.110.ASPX,但我找不到任何东西在操作是否是原子化的情况下?在复制时,另一个文件可以访问/读取文件。

我不认为"原子"对您的问题是正确的措辞在不带P/Indoke CopyFileTransacted的.NET中完成。

好吧...也就是说...这在实现详细信息中中,鉴于.NET在不同的平台上运行,则每个平台也可能在每个平台上都不同。

File.Copy() 历史上在Windows桌面实现上只是调用Win32 CopyFile。它在这方面的行为是...无证件,但我们可以检查如何打开手柄。从快速测试中,您可以看到:

  • 源文件使用FILE_SHARE_READFILE_SHARE_WRITEFILE_SHARE_DELETE
  • 打开
  • 目标文件使用FILE_SHARE_READFILE_SHARE_WRITE
  • 打开

安全假设:不假定任何,OS,媒体和文件系统可能具有不同的规则。也不认为这会随着时间的流逝而稳定。

教育合理假设:您可以假设源文件具有FILE_SHARE_READ,并且对目标文件一无所知。

最新更新