解决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中文网其他相关文章!