Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение файлов по содержимому 
V
    Опции темы
Cold_Almaty
Дата 28.4.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.1.2008

Репутация: нет
Всего: нет



Всем доброго времени суток.
Как программно сравнить два и более файлов по содержимому? Если можно пример  smile 
PM MAIL   Вверх
Ram1reS
Дата 28.4.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 25.4.2008
Где: Москва

Репутация: 3
Всего: 5



Смотря какие файлы сравнивать - если просто текстовые, то :

Код

bool isNotEqual = false;
int lineNumber = 0;
int i = 0;
StreamReader sr1 = new StreamReader(@"C:\file1.txt");
StreamReader sr2 = new StreamReader(@"C:\file2.txt");

while(!sr1.EndOfStream && !sr2.EndOfStream)
{
    i++;
    string line1 = sr1.ReadLine();
    string line2 = sr2.ReadLine();

    if ( line1 != line2 )
    {
         isNotEqual = true;
         lineNumber = i;
    }
}

if ( isNotEqual )
{
    Console.WriteLine("Not equal line {0}",lineNumber);
}

sr1.Close();
sr2.Close();


Это сообщение отредактировал(а) Ram1reS - 28.4.2008, 12:23
--------------------
 
PM MAIL ICQ   Вверх
Owner
  Дата 28.4.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 29.4.2005
Где: г. Москва

Репутация: нет
Всего: нет



См. пример в MSDN по методу File.OpenRead. Читаешь два файла в байтовые массивы, а затем в цикле сравниваешь массивы побайтно. Если хотя-бы один байт не сравнивается заканчиваешь цикл с ошибкой - "файлы не равны" иначе файлы идентичны. (С#) smile 
PM MAIL   Вверх
Cold_Almaty
Дата 28.4.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.1.2008

Репутация: нет
Всего: нет



for Ram1reS:  Файлы не обязательно текстовые.
 
А можно как нибудь сравнить хэш файлов?
PM MAIL   Вверх
Moid
Дата 28.4.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Вот так при промощи NUnit можно:
Код

FileAssert.AreEqual("file1", "file2");



--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
mr.DUDA
Дата 28.4.2008, 13:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Cold_Almaty @  28.4.2008,  12:46 Найти цитируемый пост)
А можно как нибудь сравнить хэш файлов?

Пример уже был, в поиске найдётся по слову MD5. Вкратце:
Код
            MD5 md = MD5.Create();
            md.ComputeHash(stream);



--------------------
user posted image
PM MAIL WWW   Вверх
Cold_Almaty
Дата 28.4.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.1.2008

Репутация: нет
Всего: нет



for Moid: Что такое NUnit? И FileAssert?   
PM MAIL   Вверх
Moid
Дата 28.4.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Цитата(Cold_Almaty @ 28.4.2008,  13:28)
for Moid: Что такое NUnit? И FileAssert?

NUnit - тестирование приложения.
Вот подробнее с примерами:
http://www.xprogramming.com/xpmag/acsUsingNUnit.htm


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
mr.DUDA
Дата 28.4.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Ага, и запускать приложение через nunit.exe имя_проги  smile 

Чем способ с MD5 не угодил? Сравнить хеши и всё.


--------------------
user posted image
PM MAIL WWW   Вверх
Ch0bits
Дата 28.4.2008, 15:05 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 9
Всего: 62



Вместо запуска ваших хитрых NUnit'ов и хешев можно сначала просто сравнить размеры файлов - не равны, значит разные.  smile 
PM WWW   Вверх
mr.DUDA
Дата 28.4.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Наш хеш не хитрый, он простой как доска.  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Cold_Almaty
Дата 29.4.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.1.2008

Репутация: нет
Всего: нет



Пасиб всем откликнувшемся.
Сделал через сравнение хэш-сумм. Всё оказалось очень просто.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.