2013-03-18 49 views
6

Ich möchte ein Live-Reload bestimmter Dateien implementieren. Ich nehme an, dass es irgendwie möglich ist, die letzte modifizierte Zeit einer Datei zu lesen. Das könnte verglichen werden mit dem letzten Mal, als ich diese Datei geladen habe. Ich würde das letztere in Erinnerung behalten.Wie kann ich herausfinden, ob eine Datei geändert wurde?

Wie kann ich herausfinden, ob eine Datei seit einer bestimmten Zeit geändert wurde? Die Lösung sollte unter Windows, Mac und Linux funktionieren.

Update: Es scheint, dass meine Frage einige Fehlinterpretationen ausgelöst hat. Um Klarheit zu schaffen, erkundige ich mich, ob eine Datei generell geändert wurde. Die letzte modifizierte Zeit war genau das, was mir zuerst in den Sinn kam, aber ich bin offen für jede andere Lösung! Leider kann ich es mir nicht leisten, jede Datei zu öffnen und ihren Inhalt zu vergleichen, da wir über alle Texturen eines Videospiels sprechen.

+1

Das Konzept einer letzten Änderung ist nicht tragbar. –

+0

Windows hat mindestens einen API-Aufruf, um Sie wissen zu lassen, wenn eine Datei geändert wird. http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx Vielleicht haben Ihre anderen Ziel-OS ähnliche Funktionen. – RedX

+0

SUS/POSIX/IEEE1003 Plattformen haben [stat] (http://pubs.opengroup.org/onlinepubs/009695399/functions/stat.html). Aber es gibt keinen portablen C++ Weg. –

Antwort

2

werfen Sie einen Blick auf , std::time_t last_write_time(const path&). Disclaimer: Ich bin mir nicht sicher, wie tragbar dieses Konzept ist

0

Verwenden Sie stat oder fstat Systemaufrufe. Sie ergeben eine struct stat Struktur, die die Modifikationszeit in st_atimespec enthält.

+0

Ist diese Plattform unabhängig? – danijar

+0

Wenn das MKS-Toolkit unter Windows installiert ist, dann glaube ich ja. – suspectus

+0

Nicht plattformunabhängig. Tatsächlich ist es bei vielen Systemen möglich, "atime" pro Dateisystem zu deaktivieren. – MSalters

2

Datei-System-Probleme sind in der Regel Betriebssystem abhängig. Jedes Betriebssystem verfügt über Systemaufrufe und/oder Bibliotheksfunktionen, um auf diese Informationen zuzugreifen. Unter Windows gibt es GetFileTime -function, Unix/Linux bietet stat, was auch für Mac funktionieren sollte. Vielleicht bietet Java etwas, aber alles andere wird nur mit der Standardbibliothek schwer zu erreichen sein. Google ist dein bester Freund.

2

Die QFileInfo-Klasse stellt systemunabhängige Dateiinformationen bereit.

QDateTime QFileInfo::lastModified() const 

Gibt das Datum und die Uhrzeit zurück, als die Datei zuletzt geändert wurde.

Sollte ziemlich portabel sein, da das die ganze Idee von Qt ist. Windows, MacOS und Linux werden offiziell unterstützt.

+1

Es scheint ein bisschen übertrieben, eine so große Bibliothek für diese kleine Aufgabe zu verwenden. – danijar

+1

@sharethis - wer sagt, dass du es nur dafür benutzen musst? Qt ist mit einer Zuglast von portabler Funktionalität gefüllt. Übrigens scheint es die einzige portable Lösung zu sein :) – dtech

+0

Ich entwickle ein OpenGL-Spiel, daher brauche ich das meiste von diesem Framework nicht. Aber danke für deine Antwort! – danijar

Verwandte Themen