Создайте программу, сравнивающие две структуры вложенных друг в друга папок - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д