【问题标题】:How do I reliably retrieve a file's last modified time on OS X?如何在 OS X 上可靠地检索文件的最后修改时间?
【发布时间】:2014-05-30 21:03:19
【问题描述】:

我在 OS X 上遇到问题,其中stat 间歇性地返回一个结构,其st_mtime 对于某些文件的值为 0。

为什么会发生这种情况,是否有任何替代功能可以为我提供可靠的文件修改日期?

【问题讨论】:

    标签: macos stat last-modified


    【解决方案1】:

    如果您使用的是 Objective-C,NSFileManager 有一个很好的 API,名为 "attributesOfItemAtPath:error:",其中在 NSDictionary 对象中传回的内容之一是 "fileModificationDate"

    您还可以使用 CoreFoundation CFURL 函数,例如 "CFURLCopyResourcePropertyForKey",它有一个名为 "kCFURLAttributeModificationDateKey" 的东西,您可以获取它的值。

    【讨论】:

    • 我正在使用 C++,但我很确定我可以将其用作最后的手段。
    • 那么CoreFoundation函数对你来说可能会更容易。
    【解决方案2】:

    我不知道它们的可靠性,但是 ls -lfind -ls 呢?

    编辑:

    我刚刚发现了这个:Getting the last modified date of a file in C

    在 OS X 上,st_mtimespec.tv_sec 等同于 st_mtime

    【讨论】:

      【解决方案3】:

      这听起来可能很傻,但请检查stat() 的返回码。如果它返回除零以外的任何值,则存在错误(例如,找不到文件)。

      我自己只花了几个小时来追踪这个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-23
        • 2023-04-09
        • 2011-07-02
        • 2016-07-26
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        • 2012-07-06
        相关资源
        最近更新 更多