我已经研究了文档https://msdn.microsoft.com/en-us/library/9706cfs5(V=VS.110.ASPX,但我找不到任何东西在操作是否是原子化的情况下?在复制时,另一个文件可以访问/读取文件。
我不认为"原子"对您的问题是正确的措辞在不带P/Indoke CopyFileTransacted
的.NET中完成。
好吧...也就是说...这在实现详细信息中中,鉴于.NET在不同的平台上运行,则每个平台也可能在每个平台上都不同。
File.Copy()
历史上在Windows桌面实现上只是调用Win32 CopyFile
。它在这方面的行为是...无证件,但我们可以检查如何打开手柄。从快速测试中,您可以看到:
- 源文件使用
FILE_SHARE_READ
,FILE_SHARE_WRITE
,FILE_SHARE_DELETE
。
打开 - 目标文件使用
FILE_SHARE_READ
,FILE_SHARE_WRITE
。
打开
安全假设:不假定任何,OS,媒体和文件系统可能具有不同的规则。也不认为这会随着时间的流逝而稳定。
教育合理假设:您可以假设源文件具有FILE_SHARE_READ
,并且对目标文件一无所知。