std::experimental::filesystem::last_write_time
Von cppreference.com
< cpp | experimental | fs
| Definiert im Header <experimental/filesystem> |
||
| file_time_type last_write_time( const path& p ); file_time_type last_write_time( const path& p, error_code& ec ) |
(1) | (Dateisystem-TS) |
| void last_write_time( const path& p, file_time_type new_time ); void last_write_time( const path& p, file_time_type new_time, error_code& ec ); |
(2) | (Dateisystem-TS) |
1) Gibt die Zeit der letzten Änderung von p zurück, ermittelt, als ob auf das Member
st_mtime des POSIX stat zugegriffen worden wäre (Symlinks werden verfolgt). Die nicht auslösende Überladung gibt im Fehlerfall file_time_type::min() zurück.2) Ändert die Zeit der letzten Änderung von p, als ob mittels POSIX futimens (Symlinks werden verfolgt).
Inhalt |
[bearbeiten] Parameter
| p | - | zu prüfender oder zu ändernder Pfad |
| new_time | - | neue Änderungszeit |
| ec | - | Ausgabeparameter für die Fehlerberichterstattung in der nicht auslösenden Überladung |
[bearbeiten] Rückgabewert
1) Die Zeit der letzten Änderung von p.
2) (keiner)
[bearbeiten] Ausnahmen
Die Überladung, die keinen Parameter vom Typ error_code& annimmt, löst filesystem_error bei zugrunde liegenden OS-API-Fehlern aus, konstruiert mit p als erstem Argument und dem OS-Fehlercode als Fehlercode-Argument. std::bad_alloc kann ausgelöst werden, wenn die Speicherzuweisung fehlschlägt. Die Überladung, die einen Parameter vom Typ error_code& annimmt, setzt diesen auf den OS-API-Fehlercode, falls ein OS-API-Aufruf fehlschlägt, und führt ec.clear() aus, wenn keine Fehler auftreten. Diese Überladung hatnoexcept-Spezifikation:
noexcept
[bearbeiten] Hinweise
Es wird nicht garantiert, dass der von (1) zurückgegebene Wert unmittelbar nach dem Setzen der Schreibzeit mit dem an (2) übergebenen übereinstimmt, da die Zeit des Dateisystems eine höhere Granularität haben kann als file_time_type.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <chrono> #include <experimental/filesystem> #include <fstream> #include <iomanip> #include <iostream> namespace fs = std::experimental::filesystem; using namespace std::chrono_literals; int main() { fs::path p = fs::current_path() / "example.bin"; std::ofstream(p.c_str()).put('a'); // create file auto ftime = fs::last_write_time(p); std::time_t cftime = decltype(ftime)::clock::to_time_t(ftime); // assuming system_clock std::cout << "File write time is " << std::asctime(std::localtime(&cftime)) << '\n'; fs::last_write_time(p, ftime + 1h); // move file write time 1 hour to the future ftime = fs::last_write_time(p); // read back from the filesystem cftime = decltype(ftime)::clock::to_time_t(ftime); std::cout << "File write time is " << std::asctime(std::localtime(&cftime)) << '\n'; fs::remove(p); }
Mögliche Ausgabe
File write time is Tue Mar 31 19:47:04 2015 File write time is Tue Mar 31 20:47:04 2015
[bearbeiten] Siehe auch
| repräsentiert Datei-Zeitwerte (Typedef) |