Keith Pinson
Keith Pinson

Reputation: 7985

How to touch a file/update its modification time on disk in Nim?

I'd like to update the modification time of some files in Nim, without actually modifying them, like Unix touch. I see there is an os.getLastModificationTime function, or more broadly os.getFileInfo, but I do not see corresponding set functions.

How do you touch a file in Nim? (If platform matters, I am currently working on Windows, sadly.)

Upvotes: 2

Views: 495

Answers (2)

Hugues M.
Hugues M.

Reputation: 20467

Piggybacking on def-'s answer, here is a complete example showing how you can update file modification time to "now", of file passed as first argument:

import os
import times

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

Behind the scenes (with Nim 0.19) on posix systems this delegates to posix.utimes() and will changes the 3 file timestamps for access, modify, change. On Windows the "behind the scenes" details will differ, reading source code I think it will only change "last write time", not "last access time".

Upvotes: 4

def-
def-

Reputation: 5393

Unfortunately that is system specific in the current Nim version 0.18.0. On posix you'd do:

import posix
utimes("filename", nil)

In the next release you can use the platform independent os.setLastModificationTime: https://github.com/nim-lang/Nim/pull/7543

Upvotes: 4

Related Questions