Получение списка каталогов и файлов - C#
Формулировка задачи:
Гуглю уже не первый день и никак не могу додумать как получить мне список всех файлов и подкаталогов в указанной папке. Пытался сам написать или найти готовый код. Максимум что находил, это вывод списка папок в корне, какие файлы в каждой из них есть и файлы в корне, а папки в каждой подпапке игнорировались.
Как это должно выглядеть:
Подскажи как написать код.
Решение задачи: «Получение списка каталогов и файлов»
textual
Листинг программы
class Program { static void Main() { // создаём две строковые переменные, в которые будут // записанны адреса каталогов для копирования string sourceDirectory, targetDirectory; Console.Write("Укажите папку с файлами: "); sourceDirectory = Console.ReadLine(); Console.Write("Укажите папку для копирования: "); targetDirectory = Console.ReadLine(); // с помощью строковый переменных создаём экземпляры классов // для работы с каталогами DirectoryInfo diSource = new DirectoryInfo(sourceDirectory); DirectoryInfo diTarget = new DirectoryInfo(targetDirectory); CopyAll(diSource, diTarget); Console.WriteLine("Копирование из директории {0} завершено", sourceDirectory); Console.WriteLine("Для завершения работы нажмите любую клавишу..."); Console.ReadKey(); } public static void CopyAll(DirectoryInfo source, DirectoryInfo target) { try { // Если каталог, в который необходимо скопировать файлы, не существует, // то он создаётся if (Directory.Exists(target.FullName) == false) { Directory.CreateDirectory(target.FullName); } // Копируются все файлы из каталога в каталог foreach (FileInfo fi in source.GetFiles()) { Console.WriteLine(@"Копирование файла {0}\{1}", target.FullName, fi.Name); fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true); } // Рекурсивно копируется каждый каталог foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()) { // после копирования одного каталога... DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name); // ...функция вызывает сама себя до тех пор, // пока все данные не будут скопированны CopyAll(diSourceSubDir, nextTargetSubDir); } } // исключение на случай, если пользователь введёт не правильно исходный каталог catch (Exception e) { Console.WriteLine("Не верно указан адрес!"); Console.ReadKey(); Console.Clear(); Main(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д