C# 如何获得2级目录?

C# 如何获得2级目录?,c#,recursion,directory,C#,Recursion,Directory,我有一个这样的目录,其中包含一些子目录: root child-1 child-1-1 child-1-1-1 ... child-1-1-n child-1-2 child-1-2-1 ... child-1-2-n ... child-2 child-2-1

我有一个这样的目录,其中包含一些子目录:

root
    child-1
        child-1-1
            child-1-1-1
            ...
            child-1-1-n
        child-1-2
            child-1-2-1
            ...
            child-1-2-n
        ...
    child-2
        child-2-1
            child-2-1-1
            ...
            child-2-1-n
        child-2-2
            child-2-2-1
            ...
            child-2-2-n
    child-N
使用此代码:

var dirInfo = new DirectoryInfo(@"c:\root");
var folders = dirInfo.GetDirectories().ToList();
foreach (var item in folders)
{
  Console.WriteLine(item.Name);
}
我刚拿到1级

child-1
child-2
child-3
....
child-n
现在我想在2级中获得
根目录的列表:

child-1
    child-1-1
    child-1-2
child-2
    child-2-1
    child-2-2
...
我认为使用递归函数是可能的,但我不确定这一点


提前感谢。

这应该会对您有所帮助,只需在main方法中指定您希望深入到的深度即可

using System;
using System.IO;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.BufferHeight = 500;
            listDirec(@"c:\program files", 1, 2);
            Console.ReadKey();
        }

        static void listDirec(string path, int start, int end)
        {
            var dirInfo = new DirectoryInfo(path);
            var folders = dirInfo.GetDirectories().ToList();

            foreach (var item in folders)
            {
                Console.WriteLine("".PadLeft(start * 4, ' ') + item.Name);

                if (start < end)
                    listDirec(item.FullName, start + 1, end);
            }
        }
    }
}
使用系统;
使用System.IO;
使用System.Linq;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
控制台高度=500;
listDirec(@“c:\ProgramFiles”,1,2);
Console.ReadKey();
}
静态void listDirec(字符串路径、整数开始、整数结束)
{
var dirInfo=新目录信息(路径);
var folders=dirInfo.GetDirectories().ToList();
foreach(文件夹中的变量项)
{
Console.WriteLine(“.PadLeft(start*4)”)+item.Name);
如果(开始<结束)
listDirec(item.FullName,开始+1,结束);
}
}
}
}

你想停在第二层还是更深层?是的,我只想要给定目录的第二层。谢谢,还有一件事:我想保存父文件夹和子文件夹,例如在数据库中,所以我添加了这行代码,而不是在屏幕上打印:
p.Add(“.PadLeft(start*4)”),item.Name)
p
是一个字典:
静态字典p=newdictionary()这是个好主意吗?你怎么能这么做?