C ++:如何修改文件'创建'的时间戳?

时间:2010-09-28 15:27:11

标签: c++ boost boost-filesystem

我需要修改文件的'created'(如果存在),'modified'和'visited'时间戳。理想情况下,这将是一个独立于平台的解决方案。

我环顾了加速库,但我看不到任何相关内容。对于Windows来说,我发现最近的相关内容是this

有人可以帮忙吗?感谢。

4 个答案:

答案 0 :(得分:7)

我从未使用它们,但我猜你正在寻找属性函数:
http://www.boost.org/doc/libs/1_44_0/libs/filesystem/v2/doc/reference.html#Attribute-functions

还有最后一次修改的功能:

template <class Path> std::time_t last_write_time(const Path& p);
template <class Path> void last_write_time(const Path& p, const std::time_t new_time);

答案 1 :(得分:2)

Another,稍微简单的Windows代码段。

答案 2 :(得分:1)

使用utime函数和utimbuf结构。该方法在Windows中可用,但使用前导下划线命名为_utime

更新:utime只允许您更改访问修改次(通过utimbuf的{​​{1}}和{ {1}}字段)。这很可能是因为许多Unix风格的文件系统都没有在任何地方记录创建时间。

答案 3 :(得分:0)

并非所有流行的文件系统都支持“已创建”和“已访问”的时间戳:http://en.wikipedia.org/wiki/Comparison_of_file_systems#Metadata

Windows文件系统可以,但如果您需要可移植性,现在依赖它们可能不是一个好主意。看一下这个表格,我得到的印象是,有一种趋势是在较新的文件系统中添加对它们的支持。