核心代码
finfo, _ := os. Stat ( files[ i] )
winFileAttr := finfo. Sys ( ) . ( * syscall. Win32FileAttributeData)
fmt. Println ( "文件创建时间:" , SecondToTime ( winFileAttr. CreationTime. Nanoseconds ( ) / 1e9 ) )
fmt. Println ( "最后访问时间:" , SecondToTime ( winFileAttr. LastAccessTime. Nanoseconds ( ) / 1e9 ) )
fmt. Println ( "最后修改时间:" , SecondToTime ( winFileAttr. LastWriteTime. Nanoseconds ( ) / 1e9 ) )
判断系统类型
sysType := runtime. GOOSif sysType == "linux" { fmt. Println ( "Linux system" )
} if sysType == "windows" { fmt. Println ( "Windows system" )
}
Windows获取文件创建时间和修改时间的代码
package mainimport ( "fmt" "os" "syscall"
) func main ( ) { filePath := "tmp/test" var createTime int64 var modifyTime int64 finfo, _ := os. Stat ( filePath) winFileAttr := finfo. Sys ( ) . ( * syscall. Win32FileAttributeData) createTime = winFileAttr. CreationTime. Nanoseconds ( ) / 1000 / 1000 modifyTime = winFileAttr. LastWriteTime. Nanoseconds ( ) / 1000 / 1000 fmt. Println ( "文件创建时间:" , createTime) fmt. Println ( "最后修改时间:" , modifyTime)
}
获取文件夹下每个文件的大小和创建时间以及修改时间
package mainimport ( "fmt" "os" "syscall"
) func main ( ) { dir := "tmp" files, _ := os. ReadDir ( dir) for _ , file := range files { filePath := fmt. Sprintf ( "%s/%s" , dir, file. Name ( ) ) var createTime int64 var modifyTime int64 var size int64 finfo, _ := os. Stat ( filePath) size = finfo. Size ( ) winFileAttr := finfo. Sys ( ) . ( * syscall. Win32FileAttributeData) createTime = winFileAttr. CreationTime. Nanoseconds ( ) / 1000 / 1000 modifyTime = winFileAttr. LastWriteTime. Nanoseconds ( ) / 1000 / 1000 fmt. Println ( "文件创建时间:" , createTime) fmt. Println ( "最后修改时间:" , modifyTime) fmt. Println ( "文件大小:" , size) } }