using System; using System.IO; namespace list_of_files { class Program { private static void FilesandFolders(string Path1, int Level = 0) { string[] directory = Directory.GetDirectories(Path1); string[] set = Directory.GetFiles(Path1); try { foreach (string file in set) { Console.WriteLine("β””" + Path.GetFileNameWithoutExtension(file)); } foreach (string file in directory) { Console.WriteLine("+" + Path.GetFileNameWithoutExtension(file)); FilesandFolders(file, Level++); } } catch { } } static void Main() { Console.WriteLine("ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅."); Console.Write("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя ΠΏΠ°ΠΏΠΊΠΈ: "); string path = Console.ReadLine(); Console.Read(); } } } 

    2 answers 2

     class Program { private static void FilesandFolders(string Path1, int down = 0) { string[] directory = Directory.GetDirectories(Path1); string[] set = Directory.GetFiles(Path1); try { foreach (string file in set) { Console.WriteLine(new string(' ', down) + " β”” " + Path.GetFileNameWithoutExtension(file)); } foreach (string file in directory) { Console.WriteLine(new string(' ', down) + " + " + Path.GetFileNameWithoutExtension(file)); FilesandFolders(file, down++); } } catch { } } static void Main() { Console.WriteLine("ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅."); Console.Write("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя ΠΏΠ°ΠΏΠΊΠΈ: "); string path = Console.ReadLine(); Console.WriteLine(" " + path); FilesandFolders(path, 0); Console.Read(); } 

      Well, that's where it is, just put the loop in another one and that's it:

        private static void SearchFoldersAndFiles(String path, DirectoryInfo parent = null, String space = null) { DirectoryInfo directoryInfo = new DirectoryInfo(path); foreach (var item in directoryInfo.GetDirectories()) { Console.WriteLine($"\t{space}+{item.Name}"); SearchFoldersAndFiles(path + @"\" + item.Name, item.Parent, "\t"); foreach (var file in item.GetFiles()) { Console.WriteLine($"\t\tβ””{file.Name}"); } Console.WriteLine(); } } static void Main(string[] args) { Console.WriteLine("ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅."); Console.Write("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя ΠΏΠ°ΠΏΠΊΠΈ: "); string path = Console.ReadLine(); Console.WriteLine(" " + path); SearchFoldersAndFiles($@"{path}", null); Console.ReadKey(); } 

      PS you can still play around with the output)

      • I think it would be better to do two separate cycles. Look at the code above, mb comments will appear, and I will be grateful if you offer a different way to solve the problem. - K.Vlad
      • maybe there is a logician in this but I don't like it) - Yaroslav