Namespaces
Variants

std::filesystem:: last_write_time

From cppreference.net
Определено в заголовочном файле <filesystem>
(1) (начиная с C++17)
(2) (начиная с C++17)
void last_write_time ( const std:: filesystem :: path & p,
std:: filesystem :: file_time_type new_time ) ;
(3) (начиная с C++17)
void last_write_time ( const std:: filesystem :: path & p,

std:: filesystem :: file_time_type new_time,

std:: error_code & ec ) noexcept ;
(4) (начиная с C++17)
1,2) Возвращает время последней модификации p , определяемое как при доступе к члену st_mtime POSIX stat (символические ссылки отслеживаются). Непорождающая исключения перегрузка возвращает file_time_type :: min ( ) при ошибках.
3,4) Изменяет время последней модификации p , как если бы с помощью POSIX futimens (символические ссылки отслеживаются).

Содержание

Параметры

p - путь для проверки или изменения
new_time - новое время модификации
ec - выходной параметр для сообщения об ошибках в непорождающей перегрузке

Возвращаемое значение

1,2) Время последнего изменения p .
3,4) (нет)

Исключения

Любая перегрузка, не помеченная noexcept , может выбрасывать std::bad_alloc при неудачном выделении памяти.

1,3) Выбрасывает std::filesystem::filesystem_error при ошибках базового API ОС, созданный с p в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
2,4) Устанавливает параметр std:: error_code & в код ошибки API операционной системы при сбое вызова OS API, и выполняет ec. clear ( ) если ошибок не происходит.

Примечания

Не гарантируется, что сразу после установки времени записи значение, возвращаемое (1,2) будет таким же, как переданное в качестве аргумента в (3,4) , поскольку временная гранулярность файловой системы может быть более детальной, чем filesystem::file_time_type .

Пример

#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'); // создание файла
    std::filesystem::file_time_type ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    // перемещение времени записи файла на 1 час вперед
    std::filesystem::last_write_time(p, ftime + 1h);
    // чтение обратно из файловой системы
    ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    std::filesystem::remove(p);
}

Возможный вывод:

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

Смотрите также

представляет значения времени файла
(typedef)
получает время последнего изменения данных файла, на который ссылается запись каталога
(публичная функция-член std::filesystem::directory_entry )