首页 > 后端开发 > C++ > 使用 Directory.GetFiles 时如何优雅地处理 UnauthorizedAccessException?

使用 Directory.GetFiles 时如何优雅地处理 UnauthorizedAccessException?

Mary-Kate Olsen
发布: 2025-01-07 15:11:45
原创
510 人浏览过

How Can I Gracefully Handle UnauthorizedAccessException When Using Directory.GetFiles?

强大的文件检索:处理 Directory.GetFiles 中的 UnauthorizedAccessException

文件系统操作经常会遇到权限问题,导致使用UnauthorizedAccessException时出现Directory.GetFiles。如果遇到单个不可访问的目录,此异常通常会停止整个过程。 更强大的解决方案涉及单独检查目录访问。

这种改进的方法(详见下文)会迭代每个目录,从而可以优雅地处理访问限制。

选择性文件检索解决方案

AddFiles 方法递归地处理目录。它使用 lambda 表达式将文件路径添加到列表中,忽略访问受限的目录。

<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)
    {
        // Ignore access denied errors and continue processing other directories.
    }
}</code>
登录后复制

此修改后的方法可以有效处理 UnauthorizedAccessException 块内的 try-catch 异常。 程序继续执行,从可访问的目录收集文件而不会崩溃。这提供了更好的控制并防止由于访问限制而提前终止。 与原始 foreach 方法相比,使用 ToList().ForEach() 循环提高了可读性。

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

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