Как получить дату и время последнего доступа к файлу в Go? - PullRequest
9 голосов
/ 28 ноября 2011

Кто-нибудь знает, как проверить дату и время доступа к файлу? Функция возвращает измененные дату и время, и мне нужно что-то, что сравнивает время доступа к дате и текущую дату и время.

Ответы [ 3 ]

12 голосов
/ 28 ноября 2011

Вы можете использовать os.Stat для получения структуры FileInfo , которая также содержит время последнего доступа (а также время последнего изменения и время последнего изменения статуса).

info, err := os.Stat("example.txt")
if err != nil {
     // TODO: handle errors (e.g. file not found)
}
// info.Atime_ns now contains the last access time
// (in nanoseconds since the unix epoch)

После этого вы можете использовать time.Nanoseconds для получения текущего времени (также в наносекундах с эпохи Unix, 1 января 1970 г., 00:00:00 UTC). Чтобы получить длительность в наносекундах, просто вычтите эти два значения:

duration := time.Nanoseconds() - info.Atime_ns
6 голосов
/ 06 августа 2014

В качестве альтернативы, после стат вы также можете сделать

statinfo.ModTime()

Также вы можете использовать Format (), если вам это нужно, например, для веб-сервера

см. https://gist.github.com/alexisrobert/982674

1 голос
/ 22 марта 2019

Кастом os.FileInfo к *syscall.Stat_t:

package main

import ( "fmt"; "log"; "os"; "syscall"; "time" )

func main() {
    for _, arg := range os.Args[1:] {
        fileinfo, err := os.Stat(arg)
        if err != nil {
            log.Fatal(err)
        }
        atime := fileinfo.Sys().(*syscall.Stat_t).Atim
        fmt.Println(time.Unix(atime.Sec, atime.Nsec))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...