如何在Go中获取文件的最后访问日期和时间?

问题描述 投票:9回答:3

有谁知道如何检查文件访问日期和时间?该函数返回修改的日期和时间,我需要一些东西,将访问的日期时间与当前的日期和时间进行比较。

go last-modified
3个回答
12
投票

您可以使用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来获取当前时间(自UTC时间1970年1月1日00:00:00以来的纳秒时间)。要以纳秒为单位获取持续时间,只需减去这两个值:

duration := time.Nanoseconds() - info.Atime_ns

6
投票

或者,在Stat之后你也可以做

statinfo.ModTime()

如果你需要它,你也可以在它上面使用Format(),例如用于网络服务器

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


1
投票

通过将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))
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.