最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年08月01日 17:09:11   作者:apocelipes  
這篇文章主要介紹了使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

在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.

返回一個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()這個方法,通過它我們可以獲得*syscall.Stat_t,也就是stat和lstat使用并填入文件元信息的struct stat *。
os.FileInfo里的信息并不完整,所以我們偶爾需要使用*syscall.Stat_t來獲取自己想要的信息,比如文件的創(chuàng)建時間。
因為Stat_t里的時間都是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)建時間的代碼:

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

這是輸出效果:

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

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

總結(jié)

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

相關(guān)文章

  • Go+Redis實(shí)現(xiàn)常見限流算法的示例代碼

    Go+Redis實(shí)現(xiàn)常見限流算法的示例代碼

    限流是項目中經(jīng)常需要使用到的一種工具,一般用于限制用戶的請求的頻率,也可以避免瞬間流量過大導(dǎo)致系統(tǒng)崩潰,或者穩(wěn)定消息處理速率。這篇文章主要是使用Go+Redis實(shí)現(xiàn)常見的限流算法,需要的可以參考一下
    2023-04-04
  • go-zero過載保護(hù)源碼解讀

    go-zero過載保護(hù)源碼解讀

    這篇文章主要為大家介紹了go-zero過載保護(hù)源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Go語言題解LeetCode888公平糖果交換示例詳解

    Go語言題解LeetCode888公平糖果交換示例詳解

    這篇文章主要為大家介紹了Go語言題解LeetCode888公平糖果交換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Golang實(shí)現(xiàn)簡易的命令行功能

    Golang實(shí)現(xiàn)簡易的命令行功能

    這篇文章主要為大家詳細(xì)介紹了如何通過Golang實(shí)現(xiàn)一個簡易的命令行功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的可以了解一下
    2023-02-02
  • 淺析Gin框架中路由參數(shù)的使用

    淺析Gin框架中路由參數(shù)的使用

    這篇文章主要為大家介紹了路由參數(shù)的基本語法,以及路由匹配和路由參數(shù)值提取等相關(guān)內(nèi)容,以幫助讀者更好地對Gin?框架中路由參數(shù)進(jìn)行使用,需要的可以參考下
    2023-08-08
  • Go泛型的理解和使用小結(jié)

    Go泛型的理解和使用小結(jié)

    泛型是一種非常強(qiáng)大的編程技術(shù),可以提高代碼的復(fù)用性和可讀性,通過泛型容器和類型參數(shù)化,Go語言中的泛型可以實(shí)現(xiàn)更加靈活和通用的編程,提高代碼的復(fù)用性和可維護(hù)性,本文給大家介紹Go泛型的理解和使用,感興趣的朋友一起看看吧
    2023-12-12
  • Golang實(shí)現(xiàn)按行讀取文件的方法小結(jié)

    Golang實(shí)現(xiàn)按行讀取文件的方法小結(jié)

    按行讀取文件相較于一次性載入,有著很多優(yōu)勢,如內(nèi)存效率高、處理速度快、實(shí)時性高等,本文主要介紹了Golang按行讀取文件的相關(guān)方法,希望對大家有所幫助
    2024-02-02
  • 詳解Golang如何動態(tài)獲取配置文件

    詳解Golang如何動態(tài)獲取配置文件

    項目中經(jīng)常獲取一些常用配置文件,當(dāng)有配置文件中的參數(shù)被修改后,如何的實(shí)時獲取配置文件就很關(guān)鍵了,下面小編就來講講如何利用viper實(shí)時獲取配置文件吧
    2023-08-08
  • Go get命令使用socket代理的方法

    Go get命令使用socket代理的方法

    由于某些不可描述的原因,國內(nèi)使用 go get 命令安裝某些包的時候會超時導(dǎo)致失敗,比如 net 包、 sys 包、 tools 包等。這篇文章給大家介紹go get 命令使用socket 代理的方法,感興趣的朋友一起看看吧
    2018-10-10
  • 詳解Go語言如何解析帶注釋的json

    詳解Go語言如何解析帶注釋的json

    標(biāo)準(zhǔn)的json格式是不帶注釋,但是有時候為了方便理解json中各字段的含義,需要支持帶注釋的json,這篇文章主要介紹了Go語言解析帶注釋json的相關(guān)方法,希望對大家有所幫助
    2024-03-03

最新評論

仁怀市| 楚雄市| 北辰区| 封开县| 沧州市| 濉溪县| 屯昌县| 泾川县| 泽州县| 溧水县| 昌平区| 安国市| 东乌珠穆沁旗| 桃园市| 星子县| 买车| 正蓝旗| 嘉义市| 论坛| 大庆市| 庆安县| 临武县| 东兴市| 滨海县| 卢氏县| 彭阳县| 东明县| 马鞍山市| 晋城| 洛川县| 新绛县| 乐清市| 蒙阴县| 福贡县| 申扎县| 仪征市| 禄劝| 沁源县| 简阳市| 应城市| 贵州省|