【问题标题】:UnauthorizedAccessException when using Directory.GetFiles使用 Directory.GetFiles 时出现 UnauthorizedAccessException
【发布时间】:2009-08-04 16:33:17
【问题描述】:

在我正在编写的应用程序中,用户可以添加一些文件夹来递归搜索一些文件。

问题是他想添加到应用程序中的文件可能存储在基本驱动器中,例如 K:。所以如果他直接添加这个驱动,我会得到一个异常。

或者,如果他添加了 C:\,那么我会得到 UnauthorizedAccessException,其中显示:

对路径“C:\System Volume Information”的访问被拒绝。

我怎样才能只扫描我可以扫描的地方?并能够完全扫描另一个非系统驱动器(所有目录)?

【问题讨论】:

标签: c# .net exception file


【解决方案1】:

捕获异常,忽略它,然后转到下一个目录。

【讨论】:

  • 同意,这很可能比在处理之前检查每个目录的访问权限更好。
  • @Bernhof:我也有同感。我考虑过检查权限的替代方法,但是对于有效目录来说,这会做两次工作(一次检查,然后再解析文件夹结构),所以我认为这是一个较小的选择。
  • 谢谢,当我搜索非系统基本驱动器时,我也会尝试它。那是一个不同的例外。
【解决方案2】:

那为什么这对我不起作用。我尝试/捕获未授权访问异常,但它仍然只是停止程序。

【讨论】:

  • 因为如果您尝试通过一次调用来执行此操作(在子目录中递归扫描),则该函数会在引发未授权访问异常时停止。因此,您应该执行一个递归函数,循环遍历目录/子目录并调用 Directory.GetFiles(将返回的结果连接到上层变量)包装在 Try/Catch 中以防止出现问题...
猜你喜欢
  • 2010-11-27
  • 2011-11-21
  • 2014-12-17
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多