file_time_type last_write_time() const; // (1)
file_time_type last_write_time(std::error_code& ec) const noexcept; // (2)
概要
最終更新日時を取得する。
戻り値
値がキャッシュされている場合は、それを返す。キャッシュされていない場合は、
- (1) :
std::filesystem::last_write_time(path())
を返す - (2) :
std::filesystem::last_write_time(path(), ec)
を返す
例外
- (1) :
std::filesystem::last_write_time()
関数が例外を送出する可能性がある - (2) : 投げない
例
#include <iostream>
#include <filesystem>
#include <fstream>
#include <ctime>
#include <iomanip>
namespace fs = std::filesystem;
std::string datetime_to_string(fs::file_time_type tp)
{
namespace chrono = std::chrono;
auto sec = chrono::duration_cast<chrono::seconds>(tp.time_since_epoch());
std::time_t t = sec.count();
const std::tm* lt = std::localtime(&t);
std::ostringstream ss;
ss << std::put_time(lt, "%c");
return ss.str();
}
int main()
{
fs::create_directory("dir");
fs::create_directory("dir/inner_dir");
std::ofstream{"dir/a.txt"};
for (const fs::directory_entry& x : fs::directory_iterator("dir")) {
std::cout << x.path() << " : " << datetime_to_string(x.last_write_time()) << std::endl;
}
}
出力例
"dir/inner_dir" : Tue Aug 28 14:20:58 2018
"dir/a.txt" : Tue Aug 28 14:20:58 2018
バージョン
言語
- C++17
処理系
- Clang:
- GCC: 8.1 ✅
- Visual C++: