std::filesystem::last_write_time
| 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) |
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.p, como si fuera por la función futimens de POSIX (se siguen los enlaces simbólicos).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. |
Valor de retorno
p.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.
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 std::filesystem::file_time_type.
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
Véase también
(C++17) |
Representa los valores de tiempo de un archivo. (typedef) |
| 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)
|