go - 获取 Go 中文件夹的更改日期

标签 go

我想获取文件夹重命名的日期,可以从终端使用 stat 命令来完成,例如:

> stat -x folders/folder1
File: "folders/folder1"
Size: 64           FileType: Directory
Mode: (0755/drwxr-xr-x)         Uid: (2006390509/username)  Gid: 
(296108113/EMEA\Domain Users)
Device: 1,4   Inode: 2599274    Links: 2
Access: Mon Nov 12 17:59:57 2018
Modify: Mon Nov 12 14:12:20 2018
Change: Mon Nov 12 17:28:01 2018 

更改日期是文件夹元数据的最后更改日期,其中包括重命名。

有没有什么方法可以在不使用 os.exec 并解析输出的情况下使用 Go 获取它? os.Stat 似乎仅提供最后修改日期,该日期在文件夹重命名时不会更改。

最佳答案

无法在 os.FileInfo 中访问更改时间,但可以通过存储该数据的 os.FileInfo.Sys() 获取。

您可以通过以下方式获取

package main

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

func main() {
    f, err := os.Stat("your/dir")
    if err != nil {
        log.Fatalf("err reading: %v", err)
    }

    //access change time saved in os.FileInfo.Sys()
    changeTime := f.Sys().(*syscall.Stat_t).Ctim

    fmt.Print(time.Unix(changeTime.Unix()).String())
}

当然,您需要检查 f.Sys() 是否是正确的类型,但是 syscall.Stat_t.Ctim 可能就是您想要的。

关于go - 获取 Go 中文件夹的更改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266940/

相关文章:

session - Revel - 在 session 中存储对象

asynchronous - ioutil.ReadAll 是否阻塞了我的服务器?

go - gl.DrawElements似乎使用了错误的索引

c++ - GO 中的闭包和局部变量

postgresql - 如何处理与 gorp 的连接?

go - 如何使用 golang.org/x/crypto/bn256 计算 e(g1^x,g1^x)?

go - 如何获取FaunaDB中包含子字符串的文档

go - 无法为 Kubernetes API 类型声明声明种类类型

golang 在嵌套结构中初始化内部结构对象

golang vnc连接错误-内存不足