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) p 의 최종 수정 시간을 변경합니다. POSIX futimens 함수를 사용하는 것처럼 동작합니다(심볼릭 링크는 따라갑니다).

목차

매개변수

p - 검사하거나 수정할 경로
new_time - 새로운 수정 시간
ec - 비예외 발생 오버로드에서 오류 보고를 위한 출력 매개변수

반환값

1,2) p 의 마지막 수정 시간.
3,4) (없음)

예외

noexcept 로 표시되지 않은 모든 오버로드는 메모리 할당이 실패할 경우 std::bad_alloc 을(를) throw할 수 있습니다.

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 의 public member function)