2010-09-28 106 views
5

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

我看了一下boost库,但看不到任何相关的东西。我发现最近的一些相关的东西是Windows的this

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

+4

这是Unix管理员的经典面试问题,“如何查看文件创建时间戳?”。答案是:没有这样的事情。 – Cubbi 2010-09-28 15:50:31

回答

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); 
+0

注意:其中第二个将设置最后修改时间,以防万一这是需要的。 – 2012-05-24 16:01:26

+0

这个答案如何帮助修改“创建”的标志时间? – killdaclick 2013-09-04 12:34:30

+0

@killdaclick afaik没有提供创建时间的功能。我认为如果你想要的话,你将不得不为不同的实现编写你自己的功能,支持平台 – Daniel 2013-09-04 14:16:18

1

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

更新:utime只允许您更改访问修改倍(通过utimbufactimemodtime领域)。这很可能是因为许多Unix风格的文件系统在任何地方都不会记录创建时间。

2

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

0

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

的Windows文件系统做的,但它可能不是一个好主意,如果你需要的可移植性取决于他们现在。纵观该表,我认为在新文件系统中增加对它们的支持有一种趋势。