Namespaces
Variants

std::filesystem:: last_write_time

From cppreference.net
ヘッダーで定義 <filesystem>
(1) (C++17以降)
(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,

std:: error_code & ec ) noexcept ;
(4) (C++17以降)
1,2) ファイル p の最終更新時刻を返します。これはPOSIX stat のメンバ st_mtime にアクセスする場合と同様に決定されます(シンボリックリンクは追従されます)。 例外を投げないオーバーロードは、エラー時に file_time_type :: min ( ) を返します。
3,4) 最終更新時刻を変更します。POSIXの futimens を使用した場合と同様に(シンボリックリンクは追従されます)。

目次

翻訳内容: - 「Contents」→「目次」 - その他のC++関連用語(Parameters, Return value, Exceptions, Notes, Example, See also)は翻訳せずに保持 - HTMLタグ、属性、クラス名、ID、リンク先はすべて保持 - 番号部分は変更なし

パラメータ

p - 調査または変更するパス
new_time - 新しい変更時刻
ec - 例外を投げないオーバーロードにおけるエラー報告用出力パラメータ

戻り値

1,2) p の最終変更時刻。
3,4) (なし)

例外

noexcept でマークされていないオーバーロードは、 メモリ確保に失敗した場合に std::bad_alloc をスローする可能性があります。

1,3) 基盤となるOS APIエラーが発生した場合 std::filesystem::filesystem_error をスローします。これは p を第一パス引数、OSエラーコードをエラーコード引数として構築されます。
2,4) OS API呼び出しが失敗した場合、 std:: error_code & パラメータをOS APIエラーコードに設定し、エラーが発生しなかった場合は ec. clear ( ) を実行します。

注記

書き込み時間を設定した直後に、 (1,2) によって返される値が (3,4) の引数として渡された値と同じであることは保証されません。これは、ファイルシステムの時間が filesystem::file_time_type よりも細かい粒度を持つ可能性があるためです。

#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'); // ファイル作成
    std::filesystem::file_time_type ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    // ファイルの最終更新時刻を1時間未来に設定
    std::filesystem::last_write_time(p, ftime + 1h);
    // ファイルシステムから再読み込み
    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

関連項目

ファイルの時間値を表現する
(typedef)
ディレクトリエントリが参照するファイルの最終データ更新時刻を取得する
( std::filesystem::directory_entry の公開メンバ関数)