std::filesystem::last_write_time
From cppreference.com
< cpp | filesystem
| ヘッダー <filesystem> で定義 |
||
| std::filesystem::file_time_type last_write_time( const std::filesystem::path& p ); |
(1) | (C++17以降) |
| std::filesystem::file_time_type last_write_time( const std::filesystem::path& p, std::error_code& ec ) noexcept; |
(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, |
(4) | (C++17以降) |
1,2) p の最終変更時刻を返します。これは、POSIX の
stat のメンバ st_mtime にアクセスした場合と同じように決定されます(シンボリックリンクはたどられます)。例外を投げないオーバーロードは、エラー時に file_time_type::min() を返します。目次 |
[編集] Parameters
| p | - | 検査または変更するパス |
| new_time | - | 新しい変更時刻 |
| エラーコード | - | 例外を投げないオーバーロードでのエラー報告のための出力パラメータ |
[編集] Return value
1,2) p の最終変更時刻。
3,4) (なし)
[編集] Exceptions
noexcept とマークされていないオーバーロードは、メモリ割り当てが失敗した場合に std::bad_alloc をスローする可能性があります。
1,3) 基盤となるOS APIエラーが発生した場合、最初のパス引数として `p`、エラーコード引数としてOSのエラーコードを指定して `std::filesystem::filesystem_error` がスローされます。
2,4) OS API呼び出しが失敗した場合、OS APIのエラーコードを `std::error_code&` パラメータに設定し、エラーが発生しなかった場合は `ec.clear()` を実行します。
[編集] Notes
書き込み時刻を設定した直後に、(1,2) で返される値と (3,4) の引数として渡された値が同じであることが保証されるわけではありません。これは、ファイルシステムの時刻の粒度が filesystem::file_time_type よりも細かい場合があるためです。
[編集] Example
このコードを実行
#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'); // create file std::filesystem::file_time_type ftime = std::filesystem::last_write_time(p); std::cout << std::format("File write time is {}\n", ftime); // move file write time 1 hour to the future std::filesystem::last_write_time(p, ftime + 1h); // read back from the filesystem 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
[編集] See also
| (C++17) |
ファイルの時刻値を表現する (型定義) |
| ディレクトリエントリが指すファイルの最終データ変更時刻を取得します。 ( std::filesystem::directory_entry の public メンバ関数) |