Porównywanie plików

0

Witam ,otóz mam pewien problem:
Piszę program do kopiowania plików i przy kopiowaniu potrzebuje wiedziec czy dany plik juz istnieje w katalogu docelowym czy nie , z tym nie ma problemu.

Problemem jest natomiast porównywanie zawartosci plikow.
Jak skutecznie porownac zawartosc plikow ? Musza to byc wszystkie typy plikow..
Nie chce wczytywac ich calych ani czytac bit po bicie.
Czy nie ma jakiejs opcji na wygenerowanie jakiegos hasha od tego? Probowalem z getHashCode() ale po skopiowaniu generuje inne kody dla pliku wejsciowego i wyjsciowego.

Najgorsze jest to ze nie chce porownywac calej zawarotsci ,gdyz bede kopiowal tez duze pliki np 100 mb i wtedy czas takiej operacji bedzie strasznie duzy;/.

Jesli ktos ma jakis pomysl to bylbym wdzieczny za sugestie :)

0

hash i tak wczytuje cały plik, więc nie ma sensu. proponuję porównać rozmiar, daty, atrybuty, potem kilka/kilkadziesiąt pierwszych klastrów (każdy ma zwykle zwykle 4-8kB), a potem losowo kilkadziesiąt lub więcej klastrów w losowych odległościach. jednak 100% pewność będziesz mieć tylko wtedy, kiedy sprawdzisz cały plik.

0

Jaki czas uznajesz za strasznie duży ? TotalCommander porównał pliki o rozmiarze 212 mb w 43 sekundy aktualizując przy okazji pasek postępu.

0

Tylko po co porownywac ich zawartosc? Porownuje sie jak tu kolega wspomnial nazwe, rozmiar i date utworzenia. Wiecej nie potrzeba, chyba, ze dasz to jako zaawansowana opcje (wowczas moze to byc czasochlonne). Szansa, na to, ze bedziesz mial plik tej samej wielkosci, tej samej nazwie i tym samym czasie ostatniej modyfikacji jest praktycznie bliska zeru, wiec przy zwyklym managerze wieksza funkcjonalnosci nie jest potrzebna ;)

0

Zdarza się, że dwa identyczne pliki o tej samej nazwie mają różne czasy ostatniej modyfikacji. Co jest szybsze, porównanie czy zbyteczne kopiowanie ? Kopiowanie zmieni też zapewne czas ostatniej modyfikacji co czasami jest niepożądane, czasami mile widziane jest zrównanie czasu ostatniej modyfikacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1