golang修改文件的最后访问时间,最后修改时间
生活随笔
收集整理的這篇文章主要介紹了
golang修改文件的最后访问时间,最后修改时间
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡言
1.?golang為我們提供了完善的文件操作庫,例如os,ioutil等
2.?如果你還不知道如何獲取目錄下的所有文件,請參考筆者的這篇博客:https://blog.csdn.net/yzf279533105/article/details/115356551
3. 如果只修改文件的最后訪問時間,最后修改時間,可以使用os.Chtimes()函數
4. 如果還需要修改文件的創建時間,使用os.Chtimes()就不行了,請參考筆者的另外一篇博客:https://blog.csdn.net/yzf279533105/article/details/115396553
效果如下圖
這個是文件目錄圖? ? ? ? ? ? ? ? ? ? 執行效果如下圖(可以看到所有文件的最后訪問時間,最后修改時間都改成了當前時間)
? ?
完整代碼如下
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 }// 把秒級的時間戳轉為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_2")fmt.Println("目錄下的所有文件如下")for i:=0;i<len(files);i++ {fmt.Println("文件名:",files[i])// 打印三個時間PrintFileTime(files[i])// 修改fmt.Println("修改文件的最后訪問時間,最后修改時間")os.Chtimes(files[i], time.Now(), time.Now())// 再次打印三個時間PrintFileTime(files[i])} }?
總結
以上是生活随笔為你收集整理的golang修改文件的最后访问时间,最后修改时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang获取文件创建时间,最后访问时
- 下一篇: golang语言操作文件