Piszę rozwiązanie zapasowe (sort). Po prostu kopiuje plik z lokalizacji C: \ i wkleja go do lokalizacji Z: \Jak się dowiedzieć, czy plik został zmodyfikowany?
Aby zapewnić szybkość jest szybka, przed skopiowaniem i wklejeniem sprawdza, czy plik oryginalny istnieje. Jeśli tak, wykonuje kilka "obliczeń", aby sprawdzić, czy kopia powinna być kontynuowana lub czy plik kopii zapasowej jest aktualny. Właśnie te obliczenia są trudne.
Oryginalnie porównałem rozmiar pliku, ale nie jest to wystarczająco dobre, ponieważ byłoby bardzo możliwe, aby zmienić plik i mieć taki sam rozmiar (na przykład zapisanie znaku C w notatniku ma taki sam rozmiar, jak w przypadku uratował postać T).
Muszę się więc dowiedzieć, czy zmieniona data jest inna. W tej chwili otrzymuję informacje o pliku przy użyciu klasy FileInfo
, ale po przejrzeniu wszystkich pól nie ma niczego, co wydaje się odpowiednie.
Jak mogę sprawdzić, czy kopiuję pliki, które zostały zmodyfikowane?
EDIT Widziałem sugestii na SO w użyciu sum kontrolnych MD5, ale jestem zaniepokojony to może być problem, ponieważ niektóre pliki Jestem porównujących będzie do 10GB
Jest taki ładny atrybut meta, który ma większość systemów plików, ogólnie nazywany "czasem ostatniej modyfikacji". –
Ale nie rozumiem tego z FileInfo - Zgadzam się, że jest to prawdopodobnie idealne, ale nie wiem, która klasa dostarczy mi tej informacji. – Dave
FileInfo.LastWriteTime nie ma tych informacji? Takie wrażenie uzyskałem od tego pytania: http: //stackoverflow.com/questions/1185378/how-to-get-modified-date-from-file-in-c-sharp – JoshVarty