优雅处理 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) { // 忽略此目录的访问权限错误,继续处理其他目录 } }</code>
在这个方法中,UnauthorizedAccessException
被捕获并优雅地处理,允许程序继续执行并可能发现其他可访问的文件。迭代继续遍历目录层次结构,递归调用自身以探索子目录。
通过使用此技术,您可以避免由于访问被拒绝错误而导致 Directory.GetFiles
方法终止,并保持对目录遍历过程的控制。 该方法使用 foreach
循环替代了 ToList().ForEach()
,使其更易读且效率更高。
以上是使用Directory.GetFiles遍历目录时如何处理UnauthorizedAccessException?的详细内容。更多信息请关注PHP中文网其他相关文章!