Namespaces
Variants

std::filesystem:: last_write_time

From cppreference.net
Definiert in Header <filesystem>
(1) (seit C++17)
(2) (seit C++17)
void last_write_time ( const std:: filesystem :: path & p,
std:: filesystem :: file_time_type new_time ) ;
(3) (seit C++17)
void last_write_time ( const std:: filesystem :: path & p,

std:: filesystem :: file_time_type new_time,

std:: error_code & ec ) noexcept ;
(4) (seit C++17)
1,2) Gibt den Zeitpunkt der letzten Änderung von p zurück, ermittelt wie durch Zugriff auf das Member st_mtime des POSIX stat (Symlinks werden verfolgt). Die nicht-werfende Überladung gibt file_time_type :: min ( ) bei Fehlern zurück.
3,4) Ändert den Zeitpunkt der letzten Änderung von p , als ob durch POSIX futimens (Symlinks werden verfolgt).

Inhaltsverzeichnis

Parameter

p - zu untersuchender oder zu modifizierender Pfad
new_time - neue Änderungszeit
ec - Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung

Rückgabewert

1,2) Der Zeitpunkt der letzten Änderung von p .
3,4) (keine)

Exceptions

Jede Überladung, die nicht als noexcept gekennzeichnet ist, kann std::bad_alloc auslösen, wenn die Speicherallokation fehlschlägt.

1,3) Wirft std::filesystem::filesystem_error bei zugrundeliegenden OS-API-Fehlern, konstruiert mit p als erstem Pfadargument und dem OS-Fehlercode als Fehlercodeargument.
2,4) Setzt einen std:: error_code & Parameter auf den OS-API-Fehlercode, wenn ein OS-API-Aufruf fehlschlägt, und führt ec. clear ( ) aus, falls keine Fehler auftreten.

Hinweise

Es ist nicht garantiert, dass unmittelbar nach dem Setzen der Schreibzeit der von (1,2) zurückgegebene Wert derselbe ist wie der, der als Argument an (3,4) übergeben wurde, da die Zeitgranularität des Dateisystems feiner sein kann als filesystem::file_time_type .

Beispiel

#include <chrono>
#include <filesystem>
#include <format>
#include <fstream>
#include <iostream>
using namespace std::chrono_literals;
int main()
{
    auto p = std::filesystem::temp_directory_path() / "example.bin";
    std::ofstream{p.c_str()}.put('a'); // Datei erstellen
    std::filesystem::file_time_type ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    // Schreibezeit der Datei um 1 Stunde in die Zukunft verschieben
    std::filesystem::last_write_time(p, ftime + 1h);
    // Erneut aus dem Dateisystem auslesen
    ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    std::filesystem::remove(p);
}

Mögliche Ausgabe:

File write time is 2023-09-04 19:33:24.702639224
File write time is 2023-09-04 20:33:24.702639224

Siehe auch

repräsentiert Dateizeitwerte
(typedef)
ruft den Zeitpunkt der letzten Datenänderung der Datei ab, auf die der Verzeichniseintrag verweist
(öffentliche Memberfunktion von std::filesystem::directory_entry )