【发布时间】:2019-01-27 17:18:20
【问题描述】:
我想更新 Nim 中某些文件的修改时间,而不是实际修改它们,例如 Unix touch。我看到有一个os.getLastModificationTime 函数,或者更广泛地说是os.getFileInfo,但我没有看到相应的集合函数。
如何在 Nim 中触摸文件? (如果平台很重要,遗憾的是,我目前正在使用 Windows。)
【问题讨论】:
标签: fileinfo nim-lang filemtime
我想更新 Nim 中某些文件的修改时间,而不是实际修改它们,例如 Unix touch。我看到有一个os.getLastModificationTime 函数,或者更广泛地说是os.getFileInfo,但我没有看到相应的集合函数。
如何在 Nim 中触摸文件? (如果平台很重要,遗憾的是,我目前正在使用 Windows。)
【问题讨论】:
标签: fileinfo nim-lang filemtime
不幸的是,在当前 Nim 0.18.0 版本中这是系统特定的。在 posix 上你会这样做:
import posix
utimes("filename", nil)
在下一个版本中,您可以使用独立于平台的os.setLastModificationTime:https://github.com/nim-lang/Nim/pull/7543
【讨论】:
choosenim devel 切换到您的开发分支,或运行 choosenim update devel 编译 GitHub 上的最新源并切换到该分支。
捎带def-的答案,这是一个完整的例子,展示了如何将文件修改时间更新为“现在”,作为第一个参数传递的文件:
import os
import times
let file = commandLineParams()[0]
setLastModificationTime(file, now().toTime())
在 posix 系统的幕后(使用 Nim 0.19),这将委托给 posix.utimes(),并将更改 access、modify、change 的 3 个文件时间戳。
在 Windows 上,“幕后”细节会有所不同,我认为阅读源代码只会改变“最后写入时间”,而不是“最后访问时间”。
【讨论】: