使用 Directory.GetFiles 时如何处理 UnauthorizedAccessException?
Jan 07, 2025 pm 03:18 PMDirectory.GetFiles 方法因访问限制引发的异常
在访问网络文件系统或受控环境中的文件系统时,您可能会遇到某些文件夹限制访问的情况。这会导致诸如 Directory.GetFiles 之类的方法抛出异常,从而中断程序的执行。
问题分析
当 Directory.GetFiles 方法遇到无法访问的目录时,会抛出 UnauthorizedAccessException 异常。不幸的是,在捕获此异常之前,该方法已经失败并且无法恢复。
解决方案:逐个探测目录
为了解决这个问题,建议一次探测一个目录,而不是对整个目录树进行递归搜索。这样,您可以针对每个目录捕获和处理异常,避免程序过早终止。
示例实现
以下是一个示例方法,该方法迭代遍历目录树并将文件路径添加到列表中,排除来自拒绝访问目录的文件:
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) { // 忽略无法访问的目录,继续处理其他目录 } }
登录后复制
此方法可确保即使遇到没有访问权限的目录,程序也能继续执行,从而允许您处理有访问权限的目录中的文件。 此改进版本避免了使用 ToList().ForEach()
,改用更清晰易读的 foreach
循环,提高了代码的可维护性。
以上是使用 Directory.GetFiles 时如何处理 UnauthorizedAccessException?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)