File.Move的原子性

20 .net c# filesystems

我想将目录中的文件重命名为原子事务.该文件不会更改目录.该路径作为NTFS文件系统的UNC路径提供,可能在Server 03或08上.

File.Move()原子用于这些目的吗?如果它成功完成或失败,原始文件仍然完好无损?

我的直觉是肯定的,但我想确定一下.

bof*_*ynn 22

是的,在NTFS中.从这里:

另外,如果您在NTFS下运行,那么文件操作在文件系统级别是原子操作.就任何更高的代码而言,重命名将在单个操作中发生.您看到的问题几乎似乎是跨应用程序共享FileInfo对象的问题.它是MarshalByRef对象,因此可用于远程处理环境.不知道这是否适用于您.

  • 啊,显然我想要`File.Replace()`,它会在 Windows 98 或 FAT 上引发异常(或任何不能保证原子性的情况,或者至少 [the docs](https://msdn.microsoft .com/en-us/library/9d9h163f%28v=vs.110%29.aspx) 似乎暗示)。 (2认同)