Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение файлов 
:(
    Опции темы
lugaru
Дата 13.12.2011, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Добрый день!
Подскажите как или по каким параметрам можно сравнить два любых файла. 
Например: в двух папках есть два файла с одинаковым именем но с разными датами изменения, но файлы то могут быть одинаковыми. Вот как узнать что файлы одинаковые?
PM MAIL   Вверх
Stolzen
Дата 14.12.2011, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Можно перебором. Сначала для каждого файла вычислить хеш, а потом сравнить каждый хеш с каждым - если одинаковые, сравнивать содержимое целиком. 


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Nofate
Дата 14.12.2011, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Подсчитать контрольную сумму для начала.


--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
lugaru
Дата 14.12.2011, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Тогда следующий вопрос, закономерный)))
После поисков в интернете наткнулся на хэш коды: MD5, CRC32, SHA-1 
Как Вы щитаете что с этого больше подойдет для данной задачи?????
PM MAIL   Вверх
Stolzen
Дата 14.12.2011, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Да любой берите, если скорость роли не играет. 

Это сообщение отредактировал(а) Stolzen - 14.12.2011, 04:41


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
lugaru
Дата 14.12.2011, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Stolzen @ 14.12.2011,  04:41)
Да любой берите, если скорость роли не играет.

в том от и дело что играет) 
программа должна работать как сервис, висеть в трее, и не хотелось бы что-бы она лишниее ресурсы использывала
PM MAIL   Вверх
ci5
Дата 14.12.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 разных файла могут иметь одинаковый хеш. 
Что разве другого способа узнать идентичность файлов нету? 
PM MAIL   Вверх
LSD
Дата 14.12.2011, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(ci5 @  14.12.2011,  15:47 Найти цитируемый пост)
Что разве другого способа узнать идентичность файлов нету?  

Сравнить побайтово.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Stolzen
Дата 14.12.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(lugaru @  14.12.2011,  15:13 Найти цитируемый пост)
в том от и дело что играет) 
программа должна работать как сервис, висеть в трее, и не хотелось бы что-бы она лишниее ресурсы использывала 

Тогда перепробуйте все три и выберете наиболее быстрый. 
Можно вообще в качестве хеш-функции использовать размер файла. Или хешить только первые n байт.

Это сообщение отредактировал(а) Stolzen - 14.12.2011, 15:22


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
lugaru
Дата 14.12.2011, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Stolzen @ 14.12.2011,  15:21)
Цитата(lugaru @  14.12.2011,  15:13 Найти цитируемый пост)
в том от и дело что играет) 
программа должна работать как сервис, висеть в трее, и не хотелось бы что-бы она лишниее ресурсы использывала 

Тогда перепробуйте все три и выберете наиболее быстрый. 
Можно вообще в качестве хеш-функции использовать размер файла. Или хешить только первые n байт.

а вот это идея! спасибо
PM MAIL   Вверх
_Y_
Дата 14.12.2011, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Ну, для начала, видимо, нужно определить что такое "одинаковые файлы" smile  Для системы фалы с разными именами разные. Для программы какой-нибудь они одинаковые если у них одинаковое содержание, а для пользователя - зависит от случая smile 

Видимо, предполагается одинаковое содержание и одинаковые имена. Для экономии времени я бы сделал так.
1. Сравниваем имена - 99.99......% сравнений дает "разные" - ответ получен. Об этих файлах больше не беспокоимся
2. У оставщихся сравниваем длину. Отфильтровываем еще  99.99......% 
3. Сравниваем что-нибудь-еще. Хэш, конрольную сумму, цвет глаз владельца - отбрасываем еще  99.99......% 
4. Оставшиеся сравниваем побайтово - единственный способ дающий полную гарантию.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
lugaru
Дата 14.12.2011, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(_Y_ @ 14.12.2011,  18:14)
Ну, для начала, видимо, нужно определить что такое "одинаковые файлы" smile  ...

Я себе примерно так и нарисовал, просто думал о какомто унифицированом одном способе)))
для меня основная задача стоит например в текстовых файла: название может быть одинаково и размер файла тоже но по содержанию они могу отличаться.
PM MAIL   Вверх
_Y_
Дата 14.12.2011, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Кстати, побайтовой сравнение не так страшно как кажется.

В качестве модели возьмем два бинарных файла заполненных битами случайным образом. Тогда совпадение первых байтов фалов происходит с вероятностью 2 в степени -8. Совпадение двух первых байтов подряд уже в степени -16 и т.д. Подавляющее большинство пар будет отсеиваться уже на первых нескольких байтах.

Понятное дело, что биты в файлах распределены не случайным образом, что увеличит вероятность совпадения. Но все равно до конца пару файлов придется сканировать только в том редчайшем случае если эти файлы идентичны до предпоследнего байта и только последний байт у каждого свой.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
lugaru
Дата 15.12.2011, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо, дали более чем достаточно о чем подумать, байтовое сравнение оставлю на крайний случай.
PM MAIL   Вверх
LSD
Дата 15.12.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(_Y_ @  14.12.2011,  19:14 Найти цитируемый пост)
3. Сравниваем что-нибудь-еще. Хэш, конрольную сумму, цвет глаз владельца - отбрасываем еще  99.99......% 
4. Оставшиеся сравниваем побайтово - единственный способ дающий полную гарантию. 

Вычисление хеша и так требует полного чтения файлов, можно сразу просто сравнить.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

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


 




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


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

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