我有一个目录,在复杂的子目录树中包含大量文件。
如果我尝试将该目录移动到同一分区上的另一个目录中,该操作理论上可能需要恒定的时间 - 基本上是重命名操作。 - 只要源目录中的文件都没有被使用并且没有安全问题,对吗?
如果是这样,我如何以编程方式判断是否可以将目录 A 移动到 B?
是否有任何与锁定相关的 API 可以帮助我解决这个问题?
我在 NTFS 分区上使用 C#。
最佳答案
在多任务操作系统上不存在这种“可以这样工作”的 API。它们本质上是不可靠的,比如检查文件是否被锁定。这样的测试可能会返回“未锁定”,然后您的线程可能会被抢占,而另一个进程中的另一个线程可能会锁定该文件。当您的线程重新获得 CPU 时,您会发现该文件已被锁定,即使测试表明它没有。
执行此操作的唯一方法是实际执行该操作,然后查找表明无法执行的错误。 C# 中的异常,使用 try 语句来捕获 IOException。处理起来并不容易,但至少 NTFS 允许您重命名或移动锁定的文件。
关于c# - 确定目录是否可以在 NTFS 上移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3275309/