
解决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)
{
// 以优雅的方式处理访问被拒绝的异常。
// 可以记录问题或继续处理下一个目录。
// 例如:Console.WriteLine($"Access denied to directory: {path}, Exception: {ex.Message}");
}
}</code>通过逐个探测目录,可以避免在对特定文件夹的访问被拒绝时终止整个操作。这允许程序继续处理具有访问权限的目录中的文件。 此方法比原示例更清晰地处理Directory.GetFiles的结果,避免了不必要的ToList()和ForEach()调用,提高了代码效率和可读性。
以上是使用'Directory.GetFiles”时如何处理'UnauthorizedAccessException”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!