强大的文件检索:处理 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中文网其他相关文章!