Получение списка каталогов и файлов - 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();
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы