Создайте программу, сравнивающие две структуры вложенных друг в друга папок - C#

Узнай цену своей работы

Формулировка задачи:

В C# пару дней. Задача: Создайте программу, сравнивающие две структуры вложенных друг в друга папок, заданных пользователем в командной строке. Две папки считаются равными, если они имеют одинаковую (по имени) вложенную систему файлов и подпапок. Выводятся отличающиеся папки из подкаталогов всех уровней, при выводе имен подкаталогов используется отступ, равный четырем пробелам для каждого уровня. Как я понимаю есть две директории(пути к двум файлам).Я должен в каждой папке(две исходные папки) найти все подкаталоги(в каждом подкаталоге,может быть еще каталоги и файлы) и файлы.Запомнить их имена куда-то. И сравнить эти данные двух этих папок.Если хоть одно отличие,то структуры не равны.И вывести то,чего нету в другой папке! 1.Верно? 2.Как я понял чтобы обойти ВСЁ нужна рекурсия...Ну как это все реализовать,я без понятия.

Решение задачи: «Создайте программу, сравнивающие две структуры вложенных друг в друга папок»

textual
Листинг программы
    static void CatalogComparer(DirectoryInfo di1, DirectoryInfo di2, int level = 0)
    {
      var files1 = di1.GetFiles();
      var fiels2 = di2.GetFiles();
      //здесь пишите сравнение файлов текущего каталога и выводите каталог при первом несовпадении
      var dirs1 = di1.GetDirectories();
      var dirs2 = di2.GetDirectories();
      //здесь пишите сравнение каталогов(если все файлы совпали)
      //дальше вызываете этот же метод, но передаёте так параметры:
      CatalogComparer(dirs1[i], dirs2[i], level + 1);
      //это в случае одинакового количества директорий и их одинаковых имён
      //в противном случае либо ищите те, которые совпадают
      //либо придумываете более сложную логику по желанию
    }
 
    static void Main(string[] args)
    {
      //тут пример работы с аргументами командной строки
      if(args.Length != 3)
      {
        Console.WriteLine("Неверное количество аргументов командной строки!");
        Console.ReadKey(true);
        return;
      }
      var di1 = new DirectoryInfo(args[1]);
      var di2 = new DirectoryInfo(args[2]);
      if (!di1.Exists || !di2.Exists)
      {
        Console.WriteLine("Один из каталогов не существует!");
      }
      else
      {
        CatalogComparer(di1, di2);
      }
      Console.ReadKey(true);
    }

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


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

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

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