Espacios de nombres
Variantes
Acciones

std::filesystem::last_write_time

De cppreference.com
 
 
 
Definido en el archivo de encabezado <filesystem>
std::filesystem::file_time_type last_write_time(const std::filesystem::path& p);

std::filesystem::file_time_type last_write_time(const std::filesystem::path& p,

                                                std::error_code& ec) noexcept;
(1) (desde C++17)
void last_write_time(const std::filesystem::path& p,

                     std::filesystem::file_time_type new_time);
void last_write_time(const std::filesystem::path& p,
                     std::filesystem::file_time_type new_time,

                     std::error_code& ec) noexcept;
(2) (desde C++17)
1) Devuelve el tiempo (la fecha y la hora) de la última modificación de p, determinado como si se accediera al miembro st_mtime de la estructura stat de POSIX (se siguen los enlaces simbólicos). La sobrecarga que no lanza devuelve file_time_type::min() si ocurren errores.
2) Cambia el tiempo (la fecha y la hora) de la última modificación de p, como si fuera por la función futimens de POSIX (se siguen los enlaces simbólicos).

Contenido

[editar] Parámetros

p - La ruta de acceso a examinar o modificar.
new_time - El nuevo tiempo de modificación.
ec - El parámetro de salida para informe de errores en la sobrecarga que no lanza.

[editar] Valor de retorno

1) El tiempo de la última modificación de p.
2) (Ninguno).

[editar] Excepciones

La sobrecarga que no toma un parámetro std::error_code& lanza filesystem::filesystem_error en los errores de la API del sistema operativo subyacente, construido con p como el primer argumento de la ruta de acceso y el código de error del sistema operativo como el argumento del código de error. La sobrecarga que toma un parámetro std::error_code& lo establece en el código de error de la API del sistema operativo si una llamada a la API del sistema operativo falla, y ejecuta ec.clear() si no ocurren errores. Cualquier sobrecarga que no está marcada con noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.

[editar] Notas

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

[editar] Ejemplo

#include <iostream>
#include <chrono>
#include <iomanip>
#include <fstream>
#include <filesystem>
 
using namespace std::chrono_literals;
int main()
{
    auto p = std::filesystem::temp_directory_path() / "ejemplo.bin";
    std::ofstream(p.c_str()).put('a'); // crear archivo
 
    auto print_last_write_time = [](std::filesystem::file_time_type const& ftime) {
        std::time_t cftime = std::chrono::system_clock::to_time_t(
            std::chrono::file_clock::to_sys(ftime));
        std::cout << "El tiempo de escritura del archivo es " << std::asctime(std::localtime(&cftime));
    };
 
    auto ftime = std::filesystem::last_write_time(p);
    print_last_write_time(ftime);
 
    std::filesystem::last_write_time(p, ftime + 1h); // mover el tiempo de escritura del
                                                     // archivo una hora hacia el futuro
    ftime = std::filesystem::last_write_time(p);    // leer desde el sistema de archivos
    print_last_write_time(ftime);
 
    std::filesystem::remove(p);
}

Posible salida:

El tiempo de escritura del archivo es Domingo 9 de mayo de 2021 23:29:58
El tiempo de escritura del archivo es Lunes 10 de mayo de 2021 00:29:58

[editar] Véase también

Representa los valores de tiempo de un archivo.
(typedef) [editar]
Obtiene o establece la fecha y la hora de la última modificación de datos del archivo al que se refiere la entrada de directorio.
(función miembro pública de std::filesystem::directory_entry) [editar]