C++ C++;如何获取文件最近更改的时间戳?

C++ C++;如何获取文件最近更改的时间戳?,c++,stat,filetime,C++,Stat,Filetime,我想确定Windows上文件最近更改的时间戳 是的,我使用了stat函数和st_atime、st_mtime、st_ctime。但是,Windows不会更新特定文件的这些时间戳。(我不想改变这种行为,因为这将是特定于客户端的) 那么,如何确定文件最近更改的时间戳 e、 g 重命名文件名时的时间戳(到目前为止无法实现此操作) 修改文件时的时间戳(mctime提供了这一点,但我认为这是一种单向解决方案) 提前感谢。如果您在windows上,请使用GetFileTime(),您已经通过Create

我想确定Windows上文件最近更改的时间戳

是的,我使用了stat函数和st_atime、st_mtime、st_ctime。但是,Windows不会更新特定文件的这些时间戳。(我不想改变这种行为,因为这将是特定于客户端的)

那么,如何确定文件最近更改的时间戳

e、 g

  • 重命名文件名时的时间戳(到目前为止无法实现此操作)

  • 修改文件时的时间戳(mctime提供了这一点,但我认为这是一种单向解决方案)


提前感谢。

如果您在windows上,请使用
GetFileTime
(),您已经通过
CreateFile
()打开了文件

为此,我建议阅读文章“检索上次写入时间”

在您的评论之后编辑:

在应用程序的包含部分:

#include <string>
#include <sstream>
#include <iostream>

请阅读:中的文档,然后是

中的参考,我在使用Boost时取得了很多成功,尽管我的Windows经验告诉我,如果您在短时间内对文件进行大量写入,如果在每次写入之后请求时间戳,那么返回的时间戳的分辨率不足以区分

你可以这样使用它:

boost::filesystem::path filePath = "Path/To/My/File.txt"
std::time_t writeTime = boost::filesystem::last_write_time(filePath);
std::ostringstream ss;
ss << std::put_time(&writeTime, "%c %Z");
std::string timeString = ss.str();
boost::filesystem::path filePath=“path/To/My/File.txt”
std::time\u t writeTime=boost::filesystem::last\u write\u time(文件路径);
std::ostringstream ss;

ss Cool我让它工作了,但是这与stat函数返回的值相同?@TVAvanHesteren抱歉,我不熟悉windows上的
stat
行为:(请比较:问题是,我只对客户端更改文件名时的时间戳感兴趣。stat函数返回上次修改的时间良好,但更改文件名似乎不包括在修改的时间内。(至少在较新的windows版本上默认不包括在内)当客户端更改文件名时,这会返回更新的时间吗?因此不会打开或编辑文件?@TVAvanHesteren:是的,无论文件如何更改,这都会返回最新的时间戳。如果您正在查找在修改文件时调用的回调,则需要侦听操作系统事件(深入了解Windows API)Andy,是的,但请尝试重命名该文件。我相信Windows API不会更新Windows 8及更高版本的时间戳。因此,当他们更改文件名时,时间戳是旧的
boost::filesystem::path filePath = "Path/To/My/File.txt"
std::time_t writeTime = boost::filesystem::last_write_time(filePath);
std::ostringstream ss;
ss << std::put_time(&writeTime, "%c %Z");
std::string timeString = ss.str();