📜  c# 列出子文件夹 - C# (1)

📅  最后修改于: 2023-12-03 15:29:46.834000             🧑  作者: Mango

C#列出子文件夹

在C#中,我们有多种方法可以列出和处理目录及其子目录中的文件。本文将介绍其中的一些常见方法。

1. 使用Directory.GetDirectories方法

Directory.GetDirectories方法返回指定目录的子目录数组。我们可以使用递归方法,将所有子目录遍历,并对这些子目录中的文件执行所需操作。

string rootDirectory = "C:\\Test";

List<string> directories = GetDirectories(rootDirectory);

foreach (string directory in directories)
{
    // Do what you want with the directory
}

private List<string> GetDirectories(string rootDirectory)
{
    List<string> directories = new List<string>();

    foreach (string directory in Directory.GetDirectories(rootDirectory))
    {
        directories.Add(directory);
        directories.AddRange(GetDirectories(directory));
    }

    return directories;
}

以上代码定义了一个GetDirectories方法,使用递归方式获得指定目录及其子目录中所有目录,并将它们添加到一个List对象中。

2. 使用DirectoryInfo.GetDirectories方法

类DirectoryInfo是类Directory的一个包装类,它提供了一些更方便的方法和属性。使用DirectoryInfo.GetDirectories方法同样可以获取指定目录下的子目录。

string rootDirectory = "C:\\Test";

DirectoryInfo baseDirectory = new DirectoryInfo(rootDirectory);

List<string> directories = GetDirectories(baseDirectory);

foreach (string directory in directories)
{
    // Do what you want with the directory
}

private List<string> GetDirectories(DirectoryInfo baseDirectory)
{
    List<string> directories = new List<string>();

    foreach (DirectoryInfo directory in baseDirectory.GetDirectories())
    {
        directories.Add(directory.FullName);
        directories.AddRange(GetDirectories(directory));
    }

    return directories;
}

我们定义了一个GetDirectories方法,使用递归方式获得指定目录及其子目录中所有目录,并将它们添加到一个List对象中。

3. 使用LINQ查询

可以使用LINQ查询获取指定目录及其子目录中的文件(也可以获取子目录)。此方法不需要递归函数,因此它较为简洁。

下面的代码使用递归方式获得指定目录及其子目录中所有目录,并使用LINQ获取这些目录中的所有文件。

string rootDirectory = "C:\\Test";

List<string> directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.AllDirectories)
    .ToList();

IEnumerable<string> files = directories.SelectMany(dir => Directory.GetFiles(dir));

foreach (string file in files)
{
    // Do what you want with the file
}
结论

本文介绍了三种列出指定目录及其子目录下文件和文件夹的方法。你可以根据自己的需求选择最适合的方法。