Функция last_write_time
Функция last_write_time возвращает время
последней записи файла или каталога. В первом
параметре мы передаем путь к файлу или каталогу,
а во втором - необязательный объект ошибки
std::error_code. Функция возвращает значение
типа std::filesystem::file_time_type, которое
представляет собой момент времени в специальном
формате файловой системы.
Существует также перегрузка, которая позволяет установить новое время последней записи для файла. Для этого в функцию передается путь и новое значение времени.
Синтаксис
// получение времени последней записи
file_time_type last_write_time(const path& p);
file_time_type last_write_time(const path& p, error_code& ec);
// установка времени последней записи
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);
Пример
Давайте получим время последней записи для текущего файла программы и выведем его в виде количества тактов с момента начала отсчета:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "test.txt";
fs::file_time_type ftime = fs::last_write_time(p);
cout << ftime.time_since_epoch().count() << endl;
return 0;
}
Результат выполнения кода:
133456789012345678
Пример
Давайте установим новое время последней записи для файла, используя текущее системное время:
#include <iostream>
#include <filesystem>
#include <chrono>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "test.txt";
auto now = fs::file_time_type::clock::now();
fs::last_write_time(p, now);
cout << "Time updated" << endl;
return 0;
}
Результат выполнения кода:
"Time updated"
Пример
Давайте проверим время последней записи
с обработкой ошибок, используя объект
error_code:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "nonexistent.txt";
error_code ec;
fs::file_time_type ftime = fs::last_write_time(p, ec);
if (ec)
{
cout << "Error: " << ec.message() << endl;
}
else
{
cout << ftime.time_since_epoch().count() << endl;
}
return 0;
}
Результат выполнения кода:
"Error: No such file or directory"
Смотрите также
-
класс
path,
который представляет путь к файлу -
функция
file_size,
которая возвращает размер файла -
функция
exists,
которая проверяет существование файла -
функция
is_regular_file,
которая проверяет, является ли файл обычным