c# - 如何打印每个子目录,但是每个子目录都应该在打印之前被选中

标签 c# recursion directory

我试图在不使用 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/

相关文章:

c# - 如何确定 CultureInfo 实例是否支持拉丁字符

c# - 如何在 Outlook 中添加新选项卡。使用 Visual Studio 2013 进行 Outlook 插件/插件开发

java - 计算二叉树中所有节点的节点深度

python - python 读取以数字结尾的目录中的文件

c++ - Qt 中的文件选择

windows - 在cmd中使用dir获取没有路径的文件夹名称

c# - MVC 嵌套模型集合

c# - 比较两个数据表并选择第二个表中不存在的行

c - 实现递归函数的问题

C++反向字符串递归