【问题标题】:Recursively search directories in C#在 C# 中递归搜索目录
【发布时间】:2010-12-01 07:49:34
【问题描述】:

我需要递归遍历 C# 中的目录。我正在做类似this 的事情。但是在遍历系统文件夹时会引发异常。在抛出异常之前如何检查?

【问题讨论】:

    标签: c# directory filesystems


    【解决方案1】:

    您遇到什么类型的异常?

    如果您遇到 SecurityException,您应该在 MSDN 上查看此示例

    【讨论】:

      【解决方案2】:

      您必须检查访问权限,但我强烈建议您捕获异常,这使代码更易于理解,并且还可以处理其他问题,例如当您想要远程解析目录并且网络出现故障时。 ..

      如果您为目录树制作 GUI,您还可以在其他地方获得访问权限异常和错误图标的地方添加一些漂亮的锁定图标...在 C# 中已经有一个不错的 free open source component 用于启动它。

      如果您想计算文件和大小,则无法解决权限问题,您必须在更高权限的用户下运行您的工具。

      【讨论】:

      • 在递归函数中捕获execption会导致性能不佳,能否先检查一下目录是否可以访问
      • @Rohan,检查对目录的访问将需要更多的代码和 cpu 开销,而不是尝试直接访问并让异常触发,原因是,ACL 是本机 win32 代码,所以当你尝试检查对目录的访问,您确实会花更多时间在 win32 和 CLR 对象之间编组数据。它不会对检查访问产生任何性能开销。
      【解决方案3】:

      我查看了您的链接和代码。在代码示例中,try...catch 构造用于在您到达没有权限的文件夹时停止搜索。

      因此,基于此,我对您的问题的理解可以表述为“我如何判断我是否有权读取文件夹而不尝试读取文件夹并在我没有权限时抛出异常?”

      如果是这样,那么这篇相关帖子可能会对您有所帮助。

      Checking for directory and file write permissions in .NET

      已添加

      我同意@jdehaan 的回答,但只有在阅读了我发布的建议背后的原因的链接之后。

      【讨论】:

        猜你喜欢
        • 2016-12-01
        • 1970-01-01
        • 2016-09-06
        • 2013-06-17
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        相关资源
        最近更新 更多