2 回答
TA贡献1844条经验 获得超8个赞
更改时间不可访问,但可以通过存储该数据的方式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()它是否是正确的类型,但是 yeahsyscall.Stat_t.Ctim可能是你想要的。
TA贡献1828条经验 获得超3个赞
如果您对调用 os.Exec 感到满意,也许您不介意跨平台问题。
无论如何,这段代码对我来说都是有效的。不确定它如何/是否可以在 Windows 上运行:
file, err := os.Open("test")
if err != nil {
panic(err)
}
stat, err := file.Stat()
sys := stat.Sys().(*syscall.Stat_t)
changedTime := time.Unix(sys.Ctim.Unix())
fmt.Println(stat.ModTime())
fmt.Println(changedTime)
当我跑步时
mv test test1 && mv test1 test && go run main.go
它给了我:
2018-11-12 17:31:38.659095951 +0000 GMT
2018-11-12 17:57:43.042208583 +0000 GMT
这似乎正确地反映了我更改目录名的时间,而不是创建时间(如第一个日期)
- 2 回答
- 0 关注
- 235 浏览
添加回答
举报