2013-03-18 15 views
6

Chcę zaimplementować przeładowanie na żywo niektórych plików. Zakładam, że można w jakiś sposób odczytać czas ostatniej modyfikacji pliku. Można to porównać z ostatnim ładowaniem tego pliku. Zachowałbym to ostatnie w pamięci.Jak sprawdzić, czy plik został zmodyfikowany?

Jak mogę się dowiedzieć, czy plik został zmodyfikowany od określonego czasu? Rozwiązanie powinno działać w systemach Windows, Mac i Linux.

Aktualizacja: Wydaje się, że moje pytanie jest podniesione kilka błędnych interpretacji. Aby było jasne, pytam o to, czy plik został zmodyfikowany w ogóle. Używanie czasu ostatniej modyfikacji było tym, co przyszło mi do głowy, ale jestem otwarty na każde inne rozwiązanie! Niestety nie mogę sobie pozwolić na otwieranie każdego pliku i porównywanie jego zawartości, ponieważ mówimy o wszystkich teksturach gry wideo. wzywa Zastosowanie systemu

+1

Samo pojęcie o czasie ostatniej modyfikacji nie jest przenośny. –

+0

System Windows przynajmniej ma wywołanie api, informujące o modyfikacji pliku. http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx Może twój inny system docelowy ma podobną funkcję. – RedX

+0

Platformy SUS/POSIX/IEEE1003 mają [stat] (http://pubs.opengroup.org/onlinepubs/009695399/functions/stat.html). Ale nie ma przenośnej metody C++. –

Odpowiedz

2

spojrzeć Boost.FileSystem, std::time_t last_write_time(const path&). Disclaimer: Nie jestem pewien, jak przenośny koncepcja ta jest

0

stat lub fstat. Dostarczają one strukturę struct stat, która zawiera czas modyfikacji w st_atimespec.

+0

Czy ta platforma jest niezależna? – danijar

+0

Jeśli zestaw narzędzi MKS jest zainstalowany w systemie Windows, to tak, tak sądzę. – suspectus

+0

Nie niezależna od platformy. W rzeczywistości w wielu systemach możliwe jest wyłączenie 'atime' na systemie plików. – MSalters

2

problemy systemu plików są zazwyczaj zależne od OS. Każdy system operacyjny ma wywołania systemowe i/lub funkcje biblioteczne, aby uzyskać dostęp do tych informacji. W systemie Windows istnieje GetFileTime -funkcja Unix/Linux oferuje stat, która powinna działać również na Macu. Może Java oferuje coś, ale wszystko inne będzie trudne do osiągnięcia przy użyciu tylko standardowej biblioteki. Google jest twoim najlepszym przyjacielem.

2

Klasa QFileInfo dostarcza niezależne od systemu informacje o plikach.

QDateTime QFileInfo::lastModified() const 

Powoduje zwrócenie daty i godziny ostatniej modyfikacji pliku.

powinna być dość przenośne, ponieważ jest cała idea Qt. Systemy Windows, MacOS i Linux są oficjalnie obsługiwane.

+1

Wydaje się nieco przesadą korzystanie z tak dużej biblioteki dla tego małego zadania. – danijar

+1

@sharethis - kto powiedział, że możesz go używać tylko do tego? Qt jest wypełnione obciążeniem pociągu przenośnej funkcjonalności. BTW wydaje się być jedynym przenośnym rozwiązaniem do tej pory :) – dtech

+0

Pracuję nad grą OpenGL, dlatego nie potrzebuję większości tego środowiska. Ale dzięki za twoją odpowiedź, w każdym razie! – danijar

Powiązane problemy