名前空間
変種
操作

std::filesystem::last_write_time

From cppreference.com
 
 
 
ヘッダー <filesystem> で定義
(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,

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

目次

[編集] 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

ファイルの時刻値を表現する
(型定義) [編集]
ディレクトリエントリが指すファイルの最終データ変更時刻を取得します。
(std::filesystem::directory_entry の public メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)