CiSharper
@CiSharper

Как упорядочить вывод в консоли?

Нужно вывести все файлы и папки.

class Program
    {
        public static void Show(string dirPath)
        {
            DirectoryInfo dir = new DirectoryInfo(dirPath);
            //Папки
            string[] dirs = Directory.GetDirectories(dirPath);
            //Файлы
            FileInfo[] dirFiles = dir.GetFiles();
 
            for (int i = 0; i < dirFiles.Length; i++)
            {
                Console.WriteLine("     " + dirFiles[i]);                
            }
            for (int i = 0; i < dirs.Length; i++)
            {
                Console.WriteLine(dirs[i]);
                Show(dirs[i]);                
            }           
        }
        static void Main(string[] args)
        {
            Show("D:\\test");
            Console.ReadLine();
        }
    }


Вроде работает. Но как сделать, чтобы вложенные папки с их содержимым выводились с отступом? Чтобы визуально было видно их вложенность.
Например, в папке test2 есть папка test1 со своими файлами. Но все они на одном уровне видны.

5c8cef8b13a27766448034.jpeg
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
public static void Show(string dirPath, int level)
{
...
       var sb = new StringBuilder();
       sb.Append('\t', level);
       sb.Append(dirFiles[i]);
       Console.WriteLine(sb);
...
       Show(dirs[i], level + 1);
...
}
...
static void Main(string[] args)
{
       Show("D:\\test", 0);
...
}


ps естественно, возможны и другие извращения..
spoiler
public static int level;
...
public static void Show(string dirPath)
{
...
       var sb = new StringBuilder();
       sb.Append('\t', level);
       sb.Append(dirFiles[i]);
       Console.WriteLine(sb);
...
       level++;
       Show(dirs[i]);
       level--;
       // очевидно что первый вариант будет попроще и понадежнее
...
}
...
static void Main(string[] args)
{
       level = 0;
       Show("D:\\test");
...
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы