#c# #file #diff #version
#c# #файл #разница #версия
Вопрос:
Я ищу решение для сравнения двух версий одного и того же файла, чтобы получить представление об изменениях / различиях.
Комментарии:
1. Любой вид байтового массива. Текст, изображения и т.д.
Ответ №1:
Если это обычный текст, то библиотека diff-match-patch от Google должна делать то, что вы хотите (у нее есть версия C #).
Если это двоичные данные, то посмотрите, что люди делают, чтобы применить обновления к исполняемым файлам (bsdiff и кабачок). Они ищут минимальную разницу между двумя файлами, чтобы конечным пользователям можно было отправить меньшее обновление. Звучит похоже на ваши потребности.
Комментарии:
1. вау — это гораздо более полезный ответ, чем я ожидал увидеть здесь
2. Спасибо, Джефф! Но в чем разница при сравнении текстовых и двоичных файлов? Я имею в виду, что в любом случае это просто массивы байтов, не так ли?
3. Я думаю, что основное отличие заключается в том, что текст работает построчно, и вы ищете разницу, понятную человеку. Для двоичных файлов вы смотрите на изменение минимального количества байтов в файле без учета людей
4. Я опробовал преобразование c # на github.com/LogosBible/bsdiff.net и это сработало великолепно! Но я заметил, что могу перемещать файл только вверх , а не снова вниз . Мне также нужен метод для возврата исправленного файла к его исходному состоянию. Интересно, сложно ли создать его самостоятельно…
Ответ №2:
Для обычных текстовых файлов вы можете найти реализацию с открытым исходным кодом на c # здесь: https://github.com/mmanela/diffplex