C++ How to check the last modified time of a file
since the time of this post, c++17 has been released, and it includes a filesystem library based on the boost filesystem library:
https://en.cppreference.com/w/cpp/header/filesystem
which includes a way to get the last modification time:
https://en.cppreference.com/w/cpp/filesystem/last_write_time
Please note that there are some limitations:
... The [time] resolution is as low as one hour on some filesystems... During program execution, the system clock may be set to a new value by some other, possibly automatic, process ...
There is no language-specific way to do this, however the OS provides the required functionality. In a unix system, the stat
function is what you need. There is an equivalent _stat
function provided for windows under Visual Studio.
So here is code that would work for both:
#include <sys/types.h>
#include <sys/stat.h>
#ifndef WIN32
#include <unistd.h>
#endif
#ifdef WIN32
#define stat _stat
#endif
auto filename = "/path/to/file";
struct stat result;
if(stat(filename.c_str(), &result)==0)
{
auto mod_time = result.st_mtime;
...
}
You can use boost's last_write_time
for that. Boost is cross platform.
Here's the tutorial link for that.
Boost has the advantage that it works for all kinds of file names, so it takes care of non-ASCII file names.