c# 递归访问文件夹


在C#中,递归访问文件夹通常涉及到遍历文件夹内的所有文件和子文件夹。这里提供一个简单的示例,使用`System.IO`命名空间下的`Directory`和`DirectoryInfo`类来实现递归访问文件夹的功能。


using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 假设我们要递归访问的文件夹路径是下面的字符串
        string folderPath = @"C:\YourFolderPath";

        // 调用递归函数
        TraverseDirectory(folderPath);
    }

    // 递归函数来遍历文件夹
    static void TraverseDirectory(string path)
    {
        try
        {
            // 获取指定路径的目录信息
            DirectoryInfo dirInfo = new DirectoryInfo(path);

            // 遍历目录下的所有文件和子目录
            foreach (var dir in dirInfo.GetDirectories())
            {
                // 对每个子目录递归调用TraverseDirectory
                TraverseDirectory(dir.FullName);
            }

            foreach (var file in dirInfo.GetFiles())
            {
                // 打印出文件的全路径,或者你可以在这里对文件执行其他操作
                Console.WriteLine(file.FullName);
            }
        }
        catch (Exception ex)
        {
            // 异常处理,例如处理访问权限问题
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}

这段代码定义了一个`TraverseDirectory`函数,它接受一个文件夹路径作为参数,并递归地遍历该文件夹及其所有子文件夹,打印出每个文件的全路径。你可以根据需要修改这个函数,比如添加过滤条件来只处理特定类型的文件,或者对文件执行其他操作。

注意:确保你有足够的权限来访问指定的文件夹,否则可能会抛出异常。此外,递归访问大量文件或深层嵌套的文件夹可能会导致堆栈溢出错误(虽然这在现代.NET环境中相对不常见)。在处理大型文件系统时,请考虑使用迭代方法或增加堆栈大小(尽管后者通常不是首选解决方案)。