尝试获取文件夹名称时出现UnAuthorized异常

时间:2017-03-03 16:19:50

标签: c#

我尝试将从c:\开始的所有文件和文件夹提取到树数据结构中。 每次运行,我都会对UnAuthorized的一些指令有所例外。 我发现在获得异常时继续运行的唯一解决方案是使用try-catch,但在这种情况下,运行的持续时间约为1分钟。 是否有其他解决方案可以检查是否没有文件夹权限?

我也尝试过使用directoryName.Exsists - 它没有用。

我的代码:

Restart-Service

1 个答案:

答案 0 :(得分:1)

  1. 我会使用EnumerateDirectories而不是GetDirectories。很多,更快。
  2. 在您的catch语句中 - 执行异常。不要让代码吞下它,这是糟糕的编程。
  3. 我有一个方便的小方法,我写了一段时间,对我来说效果很好,随意给它一个旋转:

        public IEnumerable<T> Find<T>(DirectoryInfo workingDirectory, 
                                       string searchPattern, 
                                       bool recursive = false) 
                                       where T : FileSystemInfo
        {
            var results = workingDirectory.EnumerateFileSystemInfos(searchPattern,
                recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
            return results.OfType<T>();
        }
    

    在您的情况下,您可以这样称呼它:

    var dirTree = Find<DirectoryInfo>(new DirectoryInfo("C:\\"), "*", true);