使用递归遍历文件夹时如何处理异常?
时间: 2024-09-29 20:13:22 浏览: 67
c#递归遍历文件夹示例
在 C# 中使用递归遍历文件夹时,确实可能会遇到各种异常,比如权限不足、路径不存在、目录为空等。为了优雅地处理这些异常,你可以使用 try-catch 块来捕获并处理可能发生的错误。以下是一个基本的例子,展示了如何遍历文件夹及其子目录:
```csharp
using System;
using System.IO;
public static void RecursiveDirectoryTraversal(string directoryPath)
{
try
{
if (!Directory.Exists(directoryPath))
{
Console.WriteLine($"Directory {directoryPath} does not exist.");
return;
}
// 获取目录中的所有信息
DirectoryInfo dirInfo = new DirectoryInfo(directoryPath);
FileInfo[] files = dirInfo.GetFiles();
DirectoryInfo[] subDirs = dirInfo.GetDirectories();
// 遍历文件
foreach (FileInfo file in files)
{
Console.WriteLine(file.FullName);
}
// 递归遍历子目录
foreach (DirectoryInfo subdir in subDirs)
{
RecursiveDirectoryTraversal(subdir.FullName); // 调用自身处理子目录
}
}
catch (UnauthorizedAccessException ex)
{
Console.WriteLine($"Unauthorized access: {ex.Message}");
}
catch (DirectoryNotFoundException ex)
{
Console.WriteLine($"Directory not found: {ex.Message}");
}
catch (IOException ex)
{
Console.WriteLine($"IO error occurred: {ex.Message}");
}
catch (Exception ex) // 捕获所有其他未知异常
{
Console.WriteLine($"Unexpected error: {ex.Message}");
}
}
```
在这个例子中,我们捕获了 `UnauthorizedAccessException`(权限问题)、`DirectoryNotFoundException`(找不到指定目录)和 `IOException`(I/O操作相关的错误)。如果还有其他未预见的异常类型,可以在 `catch (Exception ex)` 中进行处理。
阅读全文