5

我需要修改文件的“创建”(如果存在)、“修改”和“访问”时间戳。理想情况下,这将是一个独立于平台的解决方案。

我查看了 boost 库,但看不到任何相关内容。我发现的最接近的相关内容是适用于 Windows 的

任何人都可以帮忙吗?谢谢。

4

4 回答 4

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);
于 2010-09-28T15:38:24.930 回答
3

另一个稍微简单的 Windows 代码片段。

于 2010-09-28T16:19:23.740 回答
1

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

更新:utime仅允许您更改访问修改时间(通过utimbuf'sactimemodtime字段)。这很可能是因为许多 Unix 风格的文件系统不会在任何地方记录创建时间。

于 2010-09-28T15:35:53.153 回答
0

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

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

于 2010-10-13T21:14:38.593 回答