8

Windows 是否提供类似 POSIX stat的 st_ctime 字段的东西,它给出了最后一次元数据更改的时间戳?

背景:我有一些数据文件,我想检查它们是否自特定时间戳以来被修改过。检查修改后的时间戳 (mtime) 很容易,并且会处理“正常”修改,但如果用户复制旧版本的数据文件,那么修改后的时间戳将显示它们更旧。在 POSIX 系统上,复制旧文件会导致 ctime 更新,即使 mtime 更旧。

4

1 回答 1

4

据我所知,Windows确实提供了“上次更改”字段,但我还没有找到任何用于访问它的 Win32 API,因此您必须使用本机 API。

具体来说:(我实际上还没有尝试过。)

使用本机 API 并不完全简单。 这个问题和答案描述了如何做到这一点。

Cygwin利用这一点在 Windows 下提供 POSIX 语义,正如他们的邮件列表中所讨论的那样。我正在从他们的实施中获取我的信息。

虽然它只是切线相关,但这篇文章很好地描述了 Windows 确实存在的“创建”时间戳(不幸的是,它被称为 ctime)。如果将文件复制到新位置,则创建的时间戳可以比修改的时间戳更新(因为创建之后是指创建副本的时间,而修改是指上次修改原始文件的时间),否则不会更新元数据已更改。

于 2013-08-29T21:49:03.563 回答