x 深度的所有文件夹和文件的列表

Iva*_*vic 2 .net c# directory file visual-studio-2010

我想要 x 深度的所有文件夹和文件的列表。

如果 x 是 2,那么我将获得有关第一个文件夹中的所有文件夹和文件以及第一个文件夹中的文件夹中的所有文件夹和文件的信息。

这个怎么做?

pst*_*jds 5

此代码将执行其他答案正在执行的操作,但也会返回文件夹名称(因为这似乎是您所要求的内容的一部分)。这将需要 .Net 4.0。如果您希望跟踪哪些是文件夹,哪些是文件,您可以返回一个包含文件列表和文件夹列表的元组。

List<string> GetFilesAndFolders(string root, int depth)
{
    var list = new List<string>();
    foreach(var directory in Directory.EnumerateDirectories(root))
    {
        list.Add(directory);
        if (depth > 0)
        {
            list.AddRange(GetFilesAndFolders(directory, depth-1));
        }
    }

    list.AddRange(Directory.EnumerateFiles(root));

    return list;
}
Run Code Online (Sandbox Code Playgroud)

编辑:将文件夹和文件分开的代码

Tuple<List<string>,List<string>> GetFilesAndFolders(string root, int depth)
{
    var folders = new List<string>();
    var files = new List<string>();
    foreach(var directory in Directory.EnumerateDirectories(root))
    {
        folders.Add(directory);
        if (depth > 0)
        {
                var result = GetFilesAndFolders(directory, depth-1);
                folders.AddRange(result.Item1);
                files.AddRange(result.Item2);
        }
    }

    files.AddRange(Directory.EnumerateFiles(root));

    return new Tuple<List<string>,List<string>>(folders, files);
}
Run Code Online (Sandbox Code Playgroud)