Namespaces
Variants

std::filesystem:: last_write_time

From cppreference.net
Definido en el encabezado <filesystem>
(1) (desde C++17)
(2) (desde C++17)
void last_write_time ( const std:: filesystem :: path & p,
std:: filesystem :: file_time_type new_time ) ;
(3) (desde C++17)
void last_write_time ( const std:: filesystem :: path & p,

std:: filesystem :: file_time_type new_time,

std:: error_code & ec ) noexcept ;
(4) (desde C++17)
1,2) Devuelve el tiempo de la última modificación de p , determinado como si se accediera al miembro st_mtime del POSIX stat (los enlaces simbólicos son seguidos). La sobrecarga que no lanza excepciones devuelve file_time_type :: min ( ) en caso de errores.
3,4) Cambia la hora de la última modificación de p , como si fuera mediante POSIX futimens (los enlaces simbólicos son seguidos).

Contenidos

Parámetros

p - ruta a examinar o modificar
new_time - nuevo tiempo de modificación
ec - parámetro de salida para reporte de errores en la sobrecarga que no lanza excepciones

Valor de retorno

1,2) La hora de la última modificación de p .
3,4) (ninguno)

Excepciones

Cualquier sobrecarga no marcada como noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.

1,3) Lanza std::filesystem::filesystem_error en errores de API del sistema operativo subyacente, construido con p como primer argumento de ruta y el código de error del sistema operativo como argumento de código de error.
2,4) Establece un parámetro std:: error_code & al código de error de la API del sistema operativo si una llamada a la API del SO falla, y ejecuta ec. clear ( ) si no ocurren errores.

Notas

No se garantiza que inmediatamente después de establecer el tiempo de escritura, el valor devuelto por (1,2) sea el mismo que el pasado como argumento a (3,4) porque el tiempo del sistema de archivos puede ser más granular que filesystem::file_time_type .

Ejemplo

#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'); // crear archivo
    std::filesystem::file_time_type ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    // mover la hora de escritura del archivo 1 hora hacia el futuro
    std::filesystem::last_write_time(p, ftime + 1h);
    // leer nuevamente del sistema de archivos
    ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    std::filesystem::remove(p);
}

Salida posible:

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

Véase también

representa valores de tiempo de archivo
(typedef)
obtiene el tiempo de la última modificación de datos del archivo al que se refiere la entrada del directorio
(función miembro pública de std::filesystem::directory_entry )