Windows是否提供了类似POSIX stat的st_ctime字段,它提供了最后一次元数据更改的时间戳?
背景:我有一些数据文件,我想检查它们自特定时间戳以来是否被修改过。检查修改后的时间戳(mtime)很容易,并且可以处理“正常”修改,但是如果用户复制了旧版本的数据文件,那么修改后的时间戳将显示它们是旧的。在POSIX系统上,即使mtime较旧,复制旧文件也会导致ctime较新。
发布于 2013-08-30 05:49:04
据我所知,Windows确实提供了一个“最后修改时间”字段,但是我还没有找到任何访问它的Win32接口,所以你必须使用Native API。
具体地说:(我还没有真正尝试过。)
FileNetworkOpenInformation的FileInformationClass参数调用NtQueryInformationFile以获取FILE_NETWORK_OPEN_INFORMATION结构。<代码>H29使用Native API并不是很简单。This question and answer描述了如何做到这一点。
正如on their mailing list所讨论的那样,Cygwin利用这一点在Windows下提供了POSIX语义。我从their implementation那里得到我的信息。
尽管它只是切线相关,但this article对Window提供的“创建”时间戳有很好的描述(不幸的是,它被称为ctime)。如果将文件复制到新位置,则创建的时间戳可以比修改的时间戳新(因为created then指的是创建副本的时间,而modified指的是上次修改原件的时间),但在其他情况下,元数据改变时不会更新该时间戳。
https://stackoverflow.com/questions/12495784
复制相似问题