Namensräume
Varianten
Aktionen

std::filesystem::last_write_time

Von cppreference.com
 
 
 
Definiert in Header <filesystem>
(1) (seit C++17)
std::filesystem::file_time_type last_write_time( const std::filesystem::path& p,
                                                 std::error_code& ec ) noexcept;
(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 die Zeit der letzten Änderung von p zurück, ermittelt wie durch den Zugriff auf das Element st_mtime der POSIX stat-Struktur (Symlinks werden verfolgt). Die nicht-werfende Überladung gibt file_time_type::min() bei Fehlern zurück.
3,4) Ändert die Zeit der letzten Änderung von p, als ob durch POSIX futimens (Symlinks werden verfolgt).

Inhalt

[edit] Parameter

p - Pfad zum Untersuchen oder Ändern
new_time - neue Änderungszeit
ec - Ausgabeparameter für die Fehlerberichterstattung in der nicht auslösenden Überladung

[edit] Rückgabewert

1,2) Die Zeit der letzten Änderung von p.
3,4) (keine)

[edit] Ausnahmen

Jede Überladung, die nicht als noexcept markiert ist, kann std::bad_alloc auslösen, wenn die Speicherzuweisung 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, wenn keine Fehler auftreten.

[edit] Hinweise

Es wird nicht garantiert, dass unmittelbar nach dem Setzen der Schreibzeit der Wert, der von (1,2) zurückgegeben wird, derselbe ist wie das Argument, das an (3,4) übergeben wurde, da die Zeit des Dateisystems eine höhere Granularität als filesystem::file_time_type haben kann.

[edit] 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'); // create file
 
    std::filesystem::file_time_type ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
 
    // move file write time 1 hour to the future
    std::filesystem::last_write_time(p, ftime + 1h);
 
    // read back from the filesystem
    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

[edit] Siehe auch

repräsentiert Datei-Zeitwerte
(Typedef) [bearbeiten]
holt die Zeit der letzten Datenmodifikation der Datei, auf die der Verzeichniseintrag verweist
(öffentliche Elementfunktion von std::filesystem::directory_entry) [edit]