5

在我的应用程序中,我试图重命名文件夹,但如果在 Windows 资源管理器中打开该文件夹,我会得到一个IOException. 如何确定文件夹是否在 C# 的 Windows 资源管理器中打开?

4

3 回答 3

8

捕获 IOException?

正如其他人所说,只要尝试做你想做的事,如果它发生就捕获异常并采取适当的行动,无论你的上下文是什么。

在我看来,您实际上没有太多选择,请考虑:

bool iHaveAccess = CheckAccess(folder);
if (iHaveAccess)
{
    RenameFolder(folder,newFolderName);
}

如果在 CheckAccess 成功和调用 RenameFolder 之间会发生什么情况会锁定文件夹?那该怎么办?

于 2010-01-22T15:53:30.327 回答
1

确定程序是否以阻止您重命名的方式打开文件夹是不合理的。因为在您做出决定后,另一个进程可能会立即开始或停止使用该文件夹。相反,只需执行操作并捕获生成的异常。

try {
  Directory.Move("old","new");
  return true;
} catch ( IOException ) {
  return false;
}
于 2010-01-22T15:56:02.690 回答
0

经过一番搜索,我发现了这篇文章这篇文章,它们展示了如何以编程方式确定哪个进程锁定了文件的各种技术。其中之一应该允许您检查资源管理器是否已锁定文件夹。

于 2010-01-24T16:56:57.400 回答