std::filesystem::last_write_time
< 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> namespace fs = std::filesystem; using namespace std::chrono_literals; int main() { fs::path p = fs::current_path() / "example.bin"; std::ofstream(p.c_str()).put('a'); // 创建文件 auto ftime = fs::last_write_time(p); std::time_t cftime = decltype(ftime)::clock::to_time_t(ftime); // 对此演示假定为 system_clock // 注意: MSVC 上非真; C++20 将允许可移植的输出 std::time_t cftime = decltype(ftime)::clock::to_time_t(ftime); std::cout << "File write time is " << std::asctime(std::localtime(&cftime)) << '\n'; fs::last_write_time(p, ftime + 1h); // 向未来移动文件写入时间 1 小时 ftime = fs::last_write_time(p); // 从文件系统回读 cftime = decltype(ftime)::clock::to_time_t(ftime); std::cout << "File write time is " << std::asctime(std::localtime(&cftime)) << '\n'; fs::remove(p); }
可能的输出:
File write time is Tue Mar 31 19:47:04 2015 File write time is Tue Mar 31 20:47:04 2015
参阅
(C++17) |
表示文件时间值 (typedef) |
获取或设置 directory_entry 所代表的文件的最后数据修改时间 ( std::filesystem::directory_entry 的公开成员函数) |