Namensräume
Varianten
Aktionen

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 hat
noexcept-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

#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) [bearbeiten]