std::filesystem::last_write_time (3) - Linux Manuals
std::filesystem::last_write_time: std::filesystem::last_write_time
Command to display std::filesystem::last_write_time
manual in Linux: $ man 3 std::filesystem::last_write_time
NAME
std::filesystem::last_write_time - std::filesystem::last_write_time
Synopsis
Defined in header <filesystem>
std::filesystem::file_time_type last_write_time(const std::filesystem::path& p);
std::filesystem::file_time_type last_write_time(const std::filesystem::path& p, (1) (since C++17)
std::error_code& ec) noexcept;
void last_write_time(const std::filesystem::path& p,
std::filesystem::file_time_type new_time);
void last_write_time(const std::filesystem::path& p, (2) (since C++17)
std::filesystem::file_time_type new_time,
std::error_code& ec) noexcept;
1) Returns the time of the last modification of p, determined as if by accessing the member st_mtime of the POSIX stat (symlinks are followed) The non-throwing overload returns file_time_type::min() on errors.
2) Changes the time of the last modification of p, as if by POSIX futimens (symlinks are followed)
Parameters
p - path to examine or modify
new_time - new modification time
ec - out-parameter for error reporting in the non-throwing overload
Return value
1) The time of the last modification of p
2) (none)
Exceptions
The overload that does not take a std::error_code& parameter throws filesystem_error on underlying OS API errors, constructed with p as the first path argument and the OS error code as the error code argument. The overload taking a std::error_code& parameter sets it to the OS API error code if an OS API call fails, and executes ec.clear() if no errors occur. Any overload not marked noexcept may throw std::bad_alloc if memory allocation fails.
Notes
It is not guaranteed that immediately after setting the write time, the value returned by (1) is the same as what was passed as the argument to (2) because the file system's time may be more granular than file_time_type.
Example
// Run this code
#include <iostream>
#include <chrono>
#include <iomanip>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
using namespace std::chrono_literals;
int main()
{
fs::path p = fs::current_path() / "example.bin";
std::ofstream(p.c_str()).put('a'); // create file
auto ftime = fs::last_write_time(p);
// assuming system_clock for this demo
// note: not true on MSVC or GCC 9; C++20 will allow portable output
std::time_t cftime = decltype(ftime)::clock::to_time_t(ftime);
std::cout << "File write time is " << std::asctime(std::localtime(&cftime)) << '\n';
fs::last_write_time(p, ftime + 1h); // move file write time 1 hour to the future
ftime = fs::last_write_time(p); // read back from the filesystem
cftime = decltype(ftime)::clock::to_time_t(ftime);
std::cout << "File write time is " << std::asctime(std::localtime(&cftime)) << '\n';
fs::remove(p);
}
Possible output:
File write time is Tue Mar 31 19:47:04 2015
File write time is Tue Mar 31 20:47:04 2015
See also
file_time_type represents file time values
(typedef)
(C++17)
gets or sets the time of the last data modification of the file to which the directory entry refers
last_write_time (public member function of std::filesystem::directory_entry)
Pages related to std::filesystem::last_write_time
- std::filesystem::absolute (3) - std::filesystem::absolute
- std::filesystem::begin(directory_iterator),std::filesystem::end(directory_iterator) (3) - std::filesystem::begin(directory_iterator),std::filesystem::end(directory_iterator)
- std::filesystem::begin(recursive_directory_iterator), (3) - std::filesystem::begin(recursive_directory_iterator),
- std::filesystem::begin(recursive_directory_iterator),std::filesystem::end(recursive_directory_iterator) (3) - std::filesystem::begin(recursive_directory_iterator),std::filesystem::end(recursive_directory_iterator)
- std::filesystem::canonical,std::filesystem::weakly_canonical (3) - std::filesystem::canonical,std::filesystem::weakly_canonical
- std::filesystem::copy (3) - std::filesystem::copy
- std::filesystem::copy_file (3) - std::filesystem::copy_file
- std::filesystem::copy_options (3) - std::filesystem::copy_options
- std::filesystem::copy_symlink (3) - std::filesystem::copy_symlink
- std::filesystem::create_directory,std::filesystem::create_directories (3) - std::filesystem::create_directory,std::filesystem::create_directories
- std::filesystem::create_hard_link (3) - std::filesystem::create_hard_link
- std::filesystem::create_symlink,std::filesystem::create_directory_symlink (3) - std::filesystem::create_symlink,std::filesystem::create_directory_symlink
- std::filesystem::current_path (3) - std::filesystem::current_path
- std::filesystem::directory_entry (3) - std::filesystem::directory_entry
- std::filesystem::directory_entry::assign (3) - std::filesystem::directory_entry::assign
- std::filesystem::directory_entry::directory_entry (3) - std::filesystem::directory_entry::directory_entry
- std::filesystem::directory_entry::exists (3) - std::filesystem::directory_entry::exists
- std::filesystem::directory_entry::file_size (3) - std::filesystem::directory_entry::file_size
- std::filesystem::directory_entry::hard_link_count (3) - std::filesystem::directory_entry::hard_link_count
- std::filesystem::directory_entry::is_block_file (3) - std::filesystem::directory_entry::is_block_file
- std::filesystem::directory_entry::is_character_file (3) - std::filesystem::directory_entry::is_character_file