将目录重命名为原子操作

时间:2017-04-03 05:38:18

标签: c# directory filesystems

我在视觉工作室的C#工作。

我正在使用Directory.Move

命令

我有一个可操作的文件夹,我有时需要更换它。

我所做的是创建一个备份文件夹,其中新内容位于操作文件夹所在的同一目录中,删除操作并重命名该文件夹。

如果两个文件夹(操作和备份)都存在,那我可以先从备份中读取。

但是在删除操作并将备份文件夹重命名为可操作后,可能会出现(如果发生重启),只有部分备份文件/文件夹位于新的操作文件夹中,或者移动文件夹是原子操作的。

我需要操作才能成功,这意味着操作文件夹包含所有内容,或者无法重命名,但是没有任何内容

1 个答案:

答案 0 :(得分:1)

在NTFS(Windows Vista +)下,文件操作在文件系统级别已经是原子操作。

详情请见:Atomic file copy under .NET

对于WinXP及以下版本,就像你想的那样。