【问题标题】:How to touch a file/update its modification time on disk in Nim?如何在 Nim 的磁盘上触摸文件/更新其修改时间?
【发布时间】:2019-01-27 17:18:20
【问题描述】:

我想更新 Nim 中某些文件的修改时间,而不是实际修改它们,例如 Unix touch。我看到有一个os.getLastModificationTime 函数,或者更广泛地说是os.getFileInfo,但我没有看到相应的集合函数。

如何在 Nim 中触摸文件? (如果平台很重要,遗憾的是,我目前正在使用 Windows。)

【问题讨论】:

    标签: fileinfo nim-lang filemtime


    【解决方案1】:

    不幸的是,在当前 Nim 0.18.0 版本中这是系统特定的。在 posix 上你会这样做:

    import posix
    utimes("filename", nil)
    

    在下一个版本中,您可以使用独立于平台的os.setLastModificationTimehttps://github.com/nim-lang/Nim/pull/7543

    【讨论】:

    • 太好了,谢谢。你知道这个版本的发布日期是什么计划吗?您还知道自己构建预发布版本的最佳方法是什么?
    • 不知道什么时候,可以用老版本的 Nim 自己编译:github.com/nim-lang/nim#compiling
    • 另一个选择当然是使用choosenim。使用该实用程序,您可以轻松地在版本之间切换,包括最新的开发版本。只需运行 choosenim devel 切换到您的开发分支,或运行 choosenim update devel 编译 GitHub 上的最新源并切换到该分支。
    【解决方案2】:

    捎带def-的答案,这是一个完整的例子,展示了如何将文件修改时间更新为“现在”,作为第一个参数传递的文件:

    import os
    import times
    
    let file = commandLineParams()[0]
    setLastModificationTime(file, now().toTime())
    

    在 posix 系统的幕后(使用 Nim 0.19),这将委托给 posix.utimes(),并将更改 accessmodifychange 的 3 个文件时间戳。 在 Windows 上,“幕后”细节会有所不同,我认为阅读源代码只会改变“最后写入时间”,而不是“最后访问时间”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-02
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多