我查看了文档https://msdn.microsoft.com/en-us/library/9706cfs5(v=vs.110).aspx,但是我找不到任何关于操作是否原子的东西?原子的意思是另一个文件可以在复制时访问/读取文件。
答案 0 :(得分:2)
我不认为" atomic"对于你的问题是正确的措辞,除非你在谈论复制作为原子事务的一部分(AFAIK无法在没有P / Invoke CopyFileTransacted
的情况下在.NET中完成)。
嗯......那说......在实现细节中,并且假设.NET在不同的平台上运行,那么每个平台上也可能有所不同。
Windows桌面实现上的 File.Copy()
历史只调用Win32 CopyFile
。它在这方面的行为是......没有记录,但我们可以检查如何打开句柄。通过快速测试,您可以看到:
FILE_SHARE_READ
,FILE_SHARE_WRITE
,FILE_SHARE_DELETE
。FILE_SHARE_READ
,FILE_SHARE_WRITE
。安全假设:不假设,操作系统,媒体和文件系统可能有不同的规则。也不要认为这是稳定的。
教育合理的假设:您可以假设源文件具有FILE_SHARE_READ
并且不对目标文件假设。