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