Windows和ctime/st_ctime

Jos*_*ley 8 windows filesystems stat

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

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

Jos*_*ley 4

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

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

使用 Native API 并不那么简单。 这个问题和答案描述了如何做到这一点。

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

虽然只是无关紧要,但本文对 Windows 确实提供的“创建”时间戳(不幸的是称为 ctime)进行了很好的描述。如果文件被复制到新位置,则创建的时间戳可以比修改的时间戳更新(因为创建后是指创建副本的时间,而修改是指上次修改原始文件的时间),但否则不会更新元数据已更改。