简言

1. golang为我们提供了完善的文件操作库,例如os,ioutil等
2. 如果你还不知道如何获取目录下的所有文件,请参考这篇博客:https://blog.csdn.net/yzf279533105/article/details/115356551
3. 如果只修改文件的最后访问时间,最后修改时间,可以使用os.Chtimes()函数,请参考这篇博客:https://blog.csdn.net/yzf279533105/article/details/115386040

效果如下图

下面这个是文件目录图         执行效果如下图(可以看到所有文件的创建时间,最后访问时间,最后修改时间都改成了当前时间)

   

完整代码如下

package main
import ("fmt""io/ioutil""os""syscall""time"
)
// 递归获取指定目录下的所有文件名
func GetAllFile(pathname string) ([]string, error) {result := []string{}fis, err := ioutil.ReadDir(pathname)if err != nil {fmt.Printf("读取文件目录失败,pathname=%v, err=%v \n",pathname, err)return result, err}// 所有文件/文件夹for _, fi := range fis {fullname := pathname + "/" + fi.Name()// 是文件夹则递归进入获取;是文件,则压入数组if fi.IsDir() {temp, err := GetAllFile(fullname)if err != nil {fmt.Printf("读取文件目录失败,fullname=%v, err=%v",fullname, err)return result, err}result = append(result, temp...)} else {result = append(result, fullname)}}return result, nil
}// 修改文件的创建时间,最后访问时间,最后修改时间
func SetFileTime(path string, ctime, atime, mtime time.Time) (err error) {path, err = syscall.FullPath(path)if err != nil {return}pathPtr, err := syscall.UTF16PtrFromString(path)if err != nil {return}handle, err := syscall.CreateFile(pathPtr, syscall.FILE_WRITE_ATTRIBUTES, syscall.FILE_SHARE_WRITE, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0)if err != nil {return}defer syscall.Close(handle)a := syscall.NsecToFiletime(syscall.TimespecToNsec(syscall.NsecToTimespec(atime.UnixNano())))c := syscall.NsecToFiletime(syscall.TimespecToNsec(syscall.NsecToTimespec(ctime.UnixNano())))m := syscall.NsecToFiletime(syscall.TimespecToNsec(syscall.NsecToTimespec(mtime.UnixNano())))return syscall.SetFileTime(handle, &c, &a, &m)
}// 把秒级的时间戳转为time格式
func SecondToTime(sec int64) time.Time {return time.Unix(sec, 0)
}// 打印文件的创建时间,最后访问时间,最后修改时间
func PrintFileTime(pathname string) {// 获取文件原来的访问时间,修改时间finfo, _ := os.Stat(pathname)// 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))
}func main() {// 递归获取目录下的所有文件var files []stringfiles, _ = GetAllFile("E:/test/go/modify_file_time_3")fmt.Println("目录下的所有文件如下")for i:=0;i<len(files);i++ {fmt.Println("文件名:",files[i])// 打印三个时间PrintFileTime(files[i])// 修改fmt.Println("修改文件的创建时间,最后访问时间,最后修改时间")now := time.Now()SetFileTime(files[i], now, now,now)// 再次打印三个时间PrintFileTime(files[i])}
}

golang修改文件的创建时间,最后访问时间,最后修改时间相关推荐

  1. python两种方法读取、修改文件的创建时间、修改时间、访问时间

    看到网上有人出于特种目前,需要修改文件的创建时间和修改时间(访问时间是只要在操作系统里打开文件,系统就会自动更改最后的访问时间,因此此时间无意义,于是在网上查阅结合自己的经验,归纳 一下可行方案,在  ...

  2. python 修改文件创建时间_python 两种方法修改文件的创建时间、修改时间、访问时间...

    突如其来想知道一下 python 如何修改文件的属性(创建.修改.访问时间),于是就去网上搜集了可行方案,也就有了这篇博客 方案一 from win32file import CreateFile, ...

  3. 如何修改文件的 “创建时间” 和 “修改时间” (macOS, Linux, Windows) 2023 修正版

    如何修改文件的 "创建时间" 和 "修改时间" (macOS, Linux, Windows) 2023 修正版 请访问原文链接:https://sysin.o ...

  4. 怎么修改文件的创建时间和修改时间?

    怎么修改文件的创建时间和修改时间?我们打开文件的属性,便能看到这个文件的很多信息,例如文件的类型.位置.大小.所占空间,另外还有三个文件的时间信息,分别是:创建时间.修改时间和访问时间,大家似乎对前两 ...

  5. 如何修改文件的创建时间和修改时间?

    不管什么文件都是创建时间和修改时间这两个属性,可以右击文件点击"属性"按钮进行查看.前段时间有个粉丝小伙伴私信给我,怎么修改文件的创建时间和修改时间,不知道大家平时有没有这方面的需 ...

  6. 如何修改文件的创建时间?

    如何修改文件的创建时间?工作中有没有遇到过这样的情况,就是将文件的创建时间进行修改,修改成自己想要的时间,应该有小伙伴找过这样的需求.文件的创建时间就是第一次创建这个文件的时间,包括你年月日时分秒,体 ...

  7. 批量修改文件的创建时间

    今天上网查了查,发现网上修改文件的创建时间还是修改系统时间--复制文件--黏贴文件. 我找了找,找出了我之前用的一个工具. 这个软件用起来,还是稍微需要一丢丢的正则. ---------------- ...

  8. php怎么修改文件的内容,PHP问题:php如何修改文件内容

    php修改文件内容的方法:首先通过"file_get_contents"函数读出数据:然后使用"str_replace"函数修改文件内容:最后使用"f ...

  9. C语言实现 修改文件的创建时间,上一次访问的时间,最近一次修改的时间

    前言 由于看到一篇回答提到文件打开可能被发现的问题,所以有了本篇文章,用于解决t看文件后,修改文件访问时间等信息,达到不被发现的目的.那么话不多说,直接开始. 参考文章: Windows核心编程-Cr ...

最新文章

  1. 为什么我们需要开源的系统芯片?
  2. 提高开发效率之安卓模板(上面有四种模板的教程,我之前会两种,看完之后还是只会两种2333)
  3. jQuery同步Ajax带来的UI线程阻塞问题及解决办法
  4. lvs系列之dr(二)
  5. 如何使用分析模型 — 1. 关联图,从乱麻中里出头绪
  6. 【编程】基本程序设计模式
  7. Kubernetes: 集群网络配置 - flannel
  8. Ubuntu18.04 orb-slam3编译出现的错误 undefined reference to symbol ‘_ZN3MPI8Datatype4FreeEv‘ libmpi_cxx.so
  9. PHP学习笔记三(数组API)
  10. python制作QQ游戏--大家来找茬游戏辅助(一)
  11. java 实现soa_Java实现SOA的标准途径
  12. html怎么导航栏中加边框,html – 使用CSS在导航栏中显示边框三角形
  13. HTTP协议为什么是无状态的?无状态指的是什么
  14. Paperreading 之二  多人人体姿态估计COCO2017冠军—CPN
  15. L1-049. 天梯赛座位分配
  16. 网页HTML5制作flex布局骰子,css利用flex布局画骰子的六个面
  17. 陀螺仪和加速度计MPU6050的单位换算方法
  18. java语言输出当前日期时间的方法
  19. 【华为机试真题 Python实现】求n阶方阵里所有数的和
  20. ArchLinux + DDE 安装教程

热门文章

  1. ios系统苹果手机微信端取消默认长按事件
  2. 【Keil MDK中工程报错Browse information of one of more files is not available解决方法】
  3. ZZULIOJ-1049,平方和与立方和(Python)
  4. java数组和链表的区别_java中链表和数组的区别?
  5. 在word中更改所有字母和数字的格式
  6. python 标签 轴_如何在matplotlib中将轴标签对齐到右侧或顶部 - python
  7. 拆色制作助手-查字导航2.0提供常用字体文档和常用图标下载
  8. ASP 开发工厂不良品统计表+生产电子看板实践:1
  9. git rebase 变基命令——移花接木
  10. 不得不写的AJ-Ministory