我试图在不使用 SearchOption.AllDirectories 的情况下打印每个子目录,仅使用 Directory.GetDirectories 为此我使用递归。我的主要问题是像这样打印出前面有两个空格的每个子目录:
1
1,1
1,1,1
2
2,1
3
etc...
class Program
{
static void Main(string[] args)
{
string path = @"D:\Heaven Benchmark 4.0";
WriteDirectories(path);
Console.ReadKey();
}
static void WriteDirectories(string path)
{
string[] dirs = Directory.GetDirectories(path/*, "*", SearchOption.AllDirectories*/);
for (int i = 0; i < dirs.Length; i++)
{
Console.Write(dirs[i] + "\n");
if (Directory.GetDirectories(dirs[i]).Length > 0)
{
Console.Write(" "); WriteDirectories(dirs[i]);continue;
}
}
}
}
最佳答案
我会把它写成。只需使用 level 参数并将其称为
WriteDirectories(path,0);
static void WriteDirectories(string path,int level)
{
string[] dirs = Directory.GetDirectories(path);
foreach(var dir in dirs)
{
Console.WriteLine("".PadLeft(level*2, ' ') + dir);
WriteDirectories(dir, level + 1);
}
}
关于c# - 如何打印每个子目录,但是每个子目录都应该在打印之前被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845442/