代码之家  ›  专栏  ›  技术社区  ›  Prashant Cholachagudda

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

  •  5
  • Prashant Cholachagudda  · 技术社区  · 15 年前

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

    3 回复  |  直到 15 年前
        1
  •  8
  •   Sam Holder Brian Adams    15 年前

    捕获IOException?

    正如其他人所说,只要做你想做的,抓住发生的异常,并采取适当的行动,无论在你的上下文中是什么。

    我认为你没有太多选择,考虑一下:

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

    如果在checkaccess successful和调用renamefolder之间有其他东西锁定了文件夹,会发生什么?那你打算怎么办?

        2
  •  1
  •   JaredPar    15 年前

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

    try {
      Directory.Move("old","new");
      return true;
    } catch ( IOException ) {
      return false;
    }
    
        3
  •  0
  •   Community CDub    8 年前

    经过一番搜查,我找到了 this post this post 它显示了各种技术,说明如何通过编程确定哪个进程锁定了文件。其中之一应该允许您检查资源管理器是否锁定了文件夹。