std::filesystem::last_write_time
来自cppreference.com
< cpp | filesystem
定义于头文件 <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, |
(1) | (C++17 起) |
void last_write_time(const std::filesystem::path& p, std::filesystem::file_time_type new_time); |
(2) | (C++17 起) |
参数
p | - | 要检验或修改的路径 |
new_time | - | 新的修改时间 |
ec | - | 不抛出重载中报告错误的输出参数 |
返回值
1)
p
的最后修改时间2) (无)
异常
不接受 std::error_code& 参数的重载在底层 OS API 错误时抛出 filesystem_error ,以第一 path 参数 p
和作为错误码参数的 OS 错误码构造。若 OS API 调用失败,则接受 std::error_code& 参数的重载设置该参数为 OS API 错误码,而若不出现错误则执行 ec.clear() 。若内存分配失败,则任何不标记为 noexcept
的重载可能抛出 std::bad_alloc 。
注意
不保证在设置写入时间后, (1) 的返回值立即等于传递给 (2) 的参数,因为文件系统时间可能比 file_time_type
更为颗粒化。
示例
运行此代码
#include <iostream> #include <chrono> #include <iomanip> #include <fstream> #include <filesystem> using namespace std::chrono_literals; int main() { auto p = std::filesystem::temp_directory_path() / "example.bin"; std::ofstream(p.c_str()).put('a'); // 创建文件 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 << "File write time is " << 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); // 向未来移动文件时间 1 小时 ftime = std::filesystem::last_write_time(p); // 从文件系统回读 print_last_write_time(ftime); std::filesystem::remove(p); }
可能的输出:
File write time is Sun May 9 23:29:58 2021 File write time is Mon May 10 00:29:58 2021
参阅
(C++17) |
表示文件时间值 (typedef) |
获取或设置 directory_entry 所代表的文件的最后数据修改时间 ( std::filesystem::directory_entry 的公开成员函数) |