如何通过单个原子操作移动 C# .NET 中的目录

Eri*_*sky 8 .net c# filesystems file

我需要能够在单个原子操作中移动整个目录,保证系统上的任何其他东西都无法通过在启动后创建新文件、锁定文件等来破坏该操作。

据推测,如果目录位于同一卷上(如果 Directory.GetDirectoryRoot() 相同),我会使用 System.IO.Directory.Move() ,否则我必须在另一个卷上创建一个新的目标目录,并且递归复制/移动下面的所有目录和文件。

我读过的任何内容都没有显示如何获得对 .NET 中整个目录叶的独占锁,因此可以安全地完成此操作。有推荐/支持的方法来做到这一点吗?

Pon*_*gge 0

我想说的是,你真正需要的是一个事务性文件系统……而 NTFS 则不然,虽然微软已经有这样的计划,但它在成为 Vista 之前就从 Longhorn 中删除了(在那之前也从 Cairo 中删除了)。

您可以尝试在移动之前获得目录中每个文件的独占锁,并通过显式文件读/写进行移动,但递归?我不太确定这是一个好主意......而且,这不能防止添加新文件。

你到底想做什么?您为什么担心并发活动?