婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 使用golang獲取linux上文件的訪問/創(chuàng)建/修改時(shí)間

使用golang獲取linux上文件的訪問/創(chuàng)建/修改時(shí)間

熱門標(biāo)簽:浙江高頻外呼系統(tǒng)多少錢一個(gè)月 濱州自動(dòng)電銷機(jī)器人排名 建造者2地圖標(biāo)注 黃岡人工智能電銷機(jī)器人哪個(gè)好 鄭州亮點(diǎn)科技用的什么外呼系統(tǒng) 阿里云ai電話機(jī)器人 汕頭小型外呼系統(tǒng) 惠州電銷防封電話卡 釘釘有地圖標(biāo)注功能嗎

在linux上想獲取文件的元信息,我們需要使用系統(tǒng)調(diào)用lstat或者stat。

在golang的os包里已經(jīng)把stat封裝成了Stat函數(shù),使用它比使用syscall要方便不少。

這是os.Stat的原型:

func Stat(name string) (FileInfo, error)
    Stat returns a FileInfo describing the named file. If there is an error, it
    will be of type *PathError.

返回一個(gè)os.FileInfo,這里面包含有文件的元信息:

type FileInfo interface {
 Name() string  // base name of the file
 Size() int64  // length in bytes for regular files; system-dependent for others
 Mode() FileMode  // file mode bits
 ModTime() time.Time // modification time
 IsDir() bool  // abbreviation for Mode().IsDir()
 Sys() interface{} // underlying data source (can return nil)
}
 A FileInfo describes a file and is returned by Stat and Lstat.

重點(diǎn)看到Sys()這個(gè)方法,通過它我們可以獲得*syscall.Stat_t,也就是stat和lstat使用并填入文件元信息的struct stat *。
os.FileInfo里的信息并不完整,所以我們偶爾需要使用*syscall.Stat_t來獲取自己想要的信息,比如文件的創(chuàng)建時(shí)間。
因?yàn)镾tat_t里的時(shí)間都是syscall.Timespec類型,所以我們?yōu)榱溯敵鰞?nèi)容的直觀展示,需要一點(diǎn)helper function:

func timespecToTime(ts syscall.Timespec) time.Time {
 return time.Unix(int64(ts.Sec), int64(ts.Nsec))
}

然后接下來就是獲取修改/創(chuàng)建時(shí)間的代碼:

func main() {
 finfo, _ := os.Stat(filename)
 // Sys()返回的是interface{},所以需要類型斷言,不同平臺(tái)需要的類型不一樣,linux上為*syscall.Stat_t
 stat_t := finfo.Sys().(*syscall.Stat_t)
 fmt.Println(stat_t)
 // atime,ctime,mtime分別是訪問時(shí)間,創(chuàng)建時(shí)間和修改時(shí)間,具體參見man 2 stat
 fmt.Println(timespecToTime(stat_t.Atim))
 fmt.Println(timespecToTime(stat_t.Ctim))
 fmt.Println(timespecToTime(stat_t.Mtim))
}

這是輸出效果:

你會(huì)發(fā)現(xiàn)修改時(shí)間居然提前于創(chuàng)建時(shí)間!別擔(dān)心,那是因?yàn)閍time,ctime, mtime都可以人為修改,一些從網(wǎng)上下載回來的文件也會(huì)包含元信息,所以才會(huì)出現(xiàn)這種情況,并不是你穿越了:-P

golang為我們的開發(fā)提供了極大的便利,希望大家都能了解和接觸這門語言。

總結(jié)

以上所述是小編給大家介紹的使用golang獲取linux上文件的訪問/創(chuàng)建/修改時(shí)間,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • golang文件服務(wù)器的兩種方式(可以訪問任何目錄)
  • 詳解如何熱重啟golang服務(wù)器
  • 淺談Golang中創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)器的方法
  • golang實(shí)現(xiàn)http服務(wù)器處理靜態(tài)文件示例
  • 利用Golang如何調(diào)用Linux命令詳解
  • golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

標(biāo)簽:阿壩 昭通 駐馬店 瀘州 晉中 滄州 東營(yíng) 泰安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用golang獲取linux上文件的訪問/創(chuàng)建/修改時(shí)間》,本文關(guān)鍵詞  使用,golang,獲取,linux,上,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用golang獲取linux上文件的訪問/創(chuàng)建/修改時(shí)間》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于使用golang獲取linux上文件的訪問/創(chuàng)建/修改時(shí)間的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 宜兰县| 长垣县| 长白| 娄底市| 花莲市| 扎鲁特旗| 沙坪坝区| 克山县| 昆山市| 石门县| 固始县| 广德县| 东城区| 赤水市| 建湖县| 黄平县| 岗巴县| 铜陵市| 西和县| 长海县| 蓬溪县| 玉环县| 波密县| 通海县| 和平县| 高碑店市| 左云县| 永济市| 天柱县| 务川| 江津市| 博湖县| 贺州市| 奈曼旗| 禹州市| 兴宁市| 武冈市| 鄂托克旗| 七台河市| 英山县| 嘉禾县|