如何识别是否打开文件夹?

时间:2010-01-22 15:51:48

标签: c# file-io ioexception

在我的应用程序中,我正在尝试重命名该文件夹,但如果在Windows资源管理器中打开该文件夹,则会得到IOException。如何识别文件夹是否在C#中的Windows资源管理器中打开?

3 个答案:

答案 0 :(得分:8)

捕获IOException?

正如其他人所说,只是尝试做你想做的事情,如果事情发生就抓住异常并采取适当的行动,无论你的情况如何。

我认为你没有多少选择,请考虑:

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

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

答案 1 :(得分:1)

确定某个程序是否以某种方式打开文件夹以阻止您重命名它是不合理的。因为您在做出决定后立即开始或停止使用该文件夹。而只是执行操作并捕获结果异常。

try {
  Directory.Move("old","new");
  return true;
} catch ( IOException ) {
  return false;
}

答案 2 :(得分:0)

经过一番搜索后,我发现this postthis post显示了各种技巧,可以编程方式确定哪个进程锁定了文件。其中一个应该允许您检查资源管理器是否已锁定文件夹。