首页 > 后端开发 > C++ > 使用Directory.GetFiles遍历目录时如何处理UnauthorizedAccessException?

使用Directory.GetFiles遍历目录时如何处理UnauthorizedAccessException?

Mary-Kate Olsen
发布: 2025-01-07 15:06:44
原创
851 人浏览过

How Can I Handle UnauthorizedAccessException When Using Directory.GetFiles to Traverse Directories?

优雅处理 Directory.GetFiles 遍历目录时出现的 UnauthorizedAccessException 异常

在进行文件和目录操作时,使用 Directory.GetFiles 方法可能会遇到 UnauthorizedAccessException 异常。此异常发生在方法尝试访问用户缺乏相应权限的目录时。

为了解决这个问题,建议逐个探测目录,而不是遍历整个目录树。这种方法允许对操作进行更精细的控制。以下代码演示了一种改进的方法:

<code class="language-csharp">private static void AddFiles(string path, IList<string> files)
{
    try
    {
        foreach (string file in Directory.GetFiles(path))
        {
            files.Add(file);
        }

        foreach (string subdirectory in Directory.GetDirectories(path))
        {
            AddFiles(subdirectory, files);
        }
    }
    catch (UnauthorizedAccessException ex)
    {
        // 忽略此目录的访问权限错误,继续处理其他目录
    }
}</code>
登录后复制

在这个方法中,UnauthorizedAccessException 被捕获并优雅地处理,允许程序继续执行并可能发现其他可访问的文件。迭代继续遍历目录层次结构,递归调用自身以探索子目录。

通过使用此技术,您可以避免由于访问被拒绝错误而导致 Directory.GetFiles 方法终止,并保持对目录遍历过程的控制。 该方法使用 foreach 循环替代了 ToList().ForEach(),使其更易读且效率更高。

以上是使用Directory.GetFiles遍历目录时如何处理UnauthorizedAccessException?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板