C ++: Wie ein Datei ‚erstellt‘ Zeitstempel ändern?
-
26-09-2019 - |
Frage
Ich brauche die ‚erstellt‘ (falls vorhanden), ‚geändert‘ und ‚Zugriff‘ Zeitstempel einer Datei zu ändern. Im Idealfall würde dies eine plattformunabhängige Lösung sein.
Ich habe um die Boost-Bibliotheken gesucht, aber ich kann nichts relevant sehen. Der nächste ich relevant etwas gefunden habe, ist diese für Windows.
Kann mir jemand helfen? Danke.
Lösung
Ich habe sie nie benutzt, aber ich denke, dass Sie für die Attributfunktionen suchen:
http: //www.boost .org / doc / libs / 1_44_0 / libs / filesystem / v2 / doc / reference.html # Attribut-Funktionen
Darüber hinaus gibt es Funktionen für die letzte Änderung:
template <class Path> std::time_t last_write_time(const Path& p);
template <class Path> void last_write_time(const Path& p, const std::time_t new_time);
Andere Tipps
Ein weiterer , etwas einfacher Code-Schnipsel für Windows .
Mit der utime
Funktion und utimbuf
struct. Die Methode ist in Windows, sondern mit einem führenden Unterstrich als _utime
.
Update: utime
nur können Sie die Zugang ändern und Änderung Zeiten (über utimbuf
der actime
und modtime
Felder). Dies ist höchstwahrscheinlich, weil viele Unix-Dateisysteme erfassen nicht die Schöpfung Zeit an jedem Ort.
Nicht alle gängigen Dateisysteme Unterstützung 'erstellt' und 'griffenen' Zeitstempel: http: // en. wikipedia.org/wiki/Comparison_of_file_systems#Metadata
Windows-Dateisystemen zu tun, aber es könnte nicht eine gute Idee, hängen von ihnen jetzt, wenn Sie Portabilität benötigen. Ich einen Eindruck an diesem Tisch Blick bekommen, dass es einen Trend Unterstützung obwohl sie in neueren Dateisystem hinzuzufügen ist.