Каким алгоритмом можно сравнить содержимое двух папок: имеется ввиду сравнить содержимое файлов и подкаталогов в этих папках и сформировать два списочка в которые будут занесены недостающие элементы. Думаю написать простенький синхронизатор который выявлял бы различия и по кнопке «выравнивал содержимое папок».
я бы построил список для каждой стороны - List<MyFileDescription>
элементы списка — объекты (или структуры) MyFileDescription описывающие файл:
— путь от узла файловой системы с которого начинается синхронизация
— имя файла
— размер
— хэш, например MD5, в качестве слепка содержимого файла. хэш для файла вычисляется локально на каждой стороне. для принятия решения о совпадении или различии содержимого файлов одного размера, достаточно передать для сравнения хэш. у идентичных по содержимому файлов хэш тоже совпадет
— (?) дата создания или модификации, но возможно дату нет смысла учитывать, это зависит от назначения такой системы. с другой строны при наличии одноименных файлов с различным содержимым, как раз дата модификации может быть аргументом для принятия решения какой выбрать в качестве источника при синхронизации. в этом случае требуется гарантия точного времени ОС на обеих сторонах и использоввание одного и того же поясного времени (или потребуется разработка алгоритмов учета различий поясного времени, на пример приведени к Гринвичу). надо учитывать — слабым местом такого подхода может быть то что последние по времени изменения могут быть как раз ошибочными. время не является гарантией верных изменений и гарантия действительно точной временной отметки сама по себе не совсем тривиальна
для сравнения с помощью LINQ потребуется реализовать MyFileDescription интерфейсы IComparable и IComparer
так же можно использовать лямбды для запросов
Добрый день. Меня заинтересовал ваш ответ "я бы построил список для каждой стороны - List<MyFileDescription>элементы списка — объекты (ил..." на вопрос http://www.liveexpert.org/topic/view/268221-vopros-po-realizacii. Можно с вами обсудить этот ответ?
возможно в каких то случаях это даст большую гибкость
Добрый день. Меня заинтересовал ваш ответ "можно эмулировать дерево на основе TreeNodeвозможно в каких то случаях это даст большую гибкость..." на вопрос http://www.liveexpert.org/topic/view/268221-vopros-po-realizacii. Можно с вами обсудить этот ответ?