核心代码
// 获取文件原来的访问时间,修改时间
finfo, _ := os.Stat(files[i])
// linux环境下代码如下
//linuxFileAttr := finfo.Sys().(*syscall.Stat_t)
//fmt.Println("文件创建时间", SecondToTime(linuxFileAttr.Ctim.Sec))
//fmt.Println("最后访问时间", SecondToTime(linuxFileAttr.Atim.Sec))
//fmt.Println("最后修改时间", SecondToTime(linuxFileAttr.Mtim.Sec))
// windows下代码如下
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))
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
判断系统类型
Windows获取文件创建时间和修改时间的代码
package main
import (
"fmt"
"os"
"syscall"
)
func main() {
filePath := "tmp/test"
var createTime int64
var modifyTime int64
finfo, _ := os.Stat(filePath)
//if runtime.GOOS == "windows" {
// winFileAttr := finfo.Sys().(*syscall.Win32FileAttributeData)
// createTime = winFileAttr.CreationTime.Nanoseconds() / 1000 / 1000
// modifyTime = winFileAttr.LastWriteTime.Nanoseconds() / 1000 / 1000
//} else if runtime.GOOS == "linux" {
// linuxFileAttr := finfo.Sys().(*syscall.Stat_t)
// createTime = linuxFileAttr.Ctim.Sec * 1000
// modifyTime = linuxFileAttr.Mtim.Sec * 1000
//}
winFileAttr := finfo.Sys().(*syscall.Win32FileAttributeData)
createTime = winFileAttr.CreationTime.Nanoseconds() / 1000 / 1000
modifyTime = winFileAttr.LastWriteTime.Nanoseconds() / 1000 / 1000
fmt.Println("文件创建时间:", createTime)
fmt.Println("最后修改时间:", modifyTime)
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
获取文件夹下每个文件的大小和创建时间以及修改时间
package main
import (
"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)
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
本文使用 markdown.com.cn 排版