在使用 C# 遍历目录时,由于受保护的文件夹,通常会遇到访问被拒绝异常。为了防止这些异常中断程序,让我们探讨如何优雅地忽略不可访问的目录并继续处理可访问的文件。
使用 Directory.GetFiles() 的标准方法在遇到不可访问的文件夹时会突然抛出异常,从而停止任何进一步的处理。
与其依赖会引发异常的 AllDirectories 参数,不如手动实现递归。这涉及到一次迭代一个目录,尝试访问其文件,并递归地探索任何子目录。
using System; using System.IO; public static class Program { public static void Main() { string path = ""; // 获取目录路径 ProcessAllFiles(path, ProcessFile); } private static void ProcessFile(string path) { /* 在此处添加文件处理代码。 */ } private static void ProcessAllFiles(string folder, Action<string> fileAction) { try { foreach (string file in Directory.GetFiles(folder)) { fileAction(file); } foreach (string subDir in Directory.GetDirectories(folder)) { ProcessAllFiles(subDir, fileAction); } } catch (Exception ex) { // 处理或忽略异常(例如,将其记录下来以便日后查看)。 考虑记录异常类型和路径信息。 Console.WriteLine($"Error processing directory '{folder}': {ex.Message}"); } } }
此代码迭代地探索目录结构,忽略不可访问的文件夹并继续处理可访问的文件。可以自定义 catch 块来吞下异常或执行自定义处理,例如记录它。 改进后的代码包含一个 try-catch
块来处理可能发生的任何异常,并打印一条错误消息,包括异常消息和出错的文件夹路径。
通过实现自定义递归,我们可以忽略访问被拒绝异常并继续访问目录结构中的文件。即使处理受保护的或不可访问的文件夹,这也允许更健壮和用户友好的文件处理。
以上是如何安全地处理目录结构中的文件,同时忽略 C# 中的拒绝访问异常?的详细内容。更多信息请关注PHP中文网其他相关文章!