中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中怎么獲取文件的大小

發布時間:2021-07-06 15:59:38 來源:億速云 閱讀:750 作者:Leah 欄目:編程語言

本篇文章為大家展示了Go語言中怎么獲取文件的大小,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Read字節方式

第一種,是最直觀會想到的,也就是打開文件,把文件讀取一遍。

func main() {     file,err:=os.Open("water")     if err ==nil {         sum := 0         buf:=make([]byte,2014)         for  {             n,err:=file.Read(buf)             sum+=n             if err==io.EOF {                 break             }         }         fmt.Println("file size is ",sum)     } }

這種方式需要打開文件,通過for循環讀取文件的字節內容,然后算出文件的大小,這樣時也是最不能用的辦法,因為效率低,代碼量大。

ioutil方式

上面的代碼比較啰嗦,這時候我們可能想到了使用ioutil包的ReadFile來代替,直接獲得文件的內容,進而計算出文件的大小。

func main() {     content,err:=ioutil.ReadFile("water")     if err == nil {         fmt.Println("file size is ",len(content))     } }

通過ioutil.ReadFile函數,我們三行代碼就可以搞定,的確方便很多,但是效率慢的問題依然,存在,如果是個很大的文件呢?

Stat方法

繼續再進一步,我們不讀取文件的內容來計算了,我們通過文件的信息

func main() {     file,err:=os.Open("water")      if err == nil {         fi,_:=file.Stat()         fmt.Println("file size is ",fi.Size())     } }

這種方式不會再讀取文件的內容,而是通過Stat方法直接獲取,速度會非常快,尤其對于大文件尤其有用。但是它還不是我們今天要講的終極辦法,因為它還是會打開文件,會占用它。

終極方案

好了,我們的終極方案終于要登場了,他的代碼也非常簡單。

func main() {     fi,err:=os.Stat("water")     if err ==nil {         fmt.Println("file size is ",fi.Size(),err)     } }

是的,也只需要三行代碼即可實現,這里使用的是os.Stat,通過他可以獲得文件的元數據信息,現在我們看看它能獲取到哪些信息。

獲取文件信息

通過os.Stat方法,我們可以獲取文件的信息,比如文件大小、名字等。

func main() {     fi,err:=os.Stat("water")     if err ==nil {         fmt.Println("name:",fi.Name())         fmt.Println("size:",fi.Size())         fmt.Println("is dir:",fi.IsDir())         fmt.Println("mode::",fi.Mode())         fmt.Println("modTime:",fi.ModTime())     } }

運行這段代碼看下結果:

name: water size: 403 is dir: false mode:: -rw-r--r-- modTime: 2018-05-06 18:52:07 +0800 CST

以上就是可以獲取到的文件信息,還包括判斷是否是目錄,權限模式和修改時間。所以我們對于文件的信息獲取要使用os.Stat函數,它可以在不打開文件的情況下,高效獲取文件信息。

判斷文件是否存在

os.Stat函數有兩個返回值,一個是文件信息,一個是err,通過err我們可以判斷文件是否存在。

首先,err==nil的時候,文件肯定是存在的;其次err!=nil的時候也不代表不存在,這時候我們就需要進行嚴密的判斷。

func main() {     _,err:=os.Stat(".")     if err ==nil {         fmt.Println("file exist")     }else if os.IsNotExist(err){         fmt.Println("file not exist")     }else{         fmt.Println(err)     } }

通過os.IsNotExist來判斷一個文件不存在。最后else的可能性比較少,這個時候可以看下具體的錯誤是什么,再根據錯誤來判斷文件是否存在。

上述內容就是Go語言中怎么獲取文件的大小,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

当涂县| 繁昌县| 长岭县| 永登县| 贵德县| 万年县| 武邑县| 仪陇县| 西宁市| 锦州市| 当阳市| 合水县| 昌平区| 肇州县| 铜鼓县| 宜章县| 云南省| 夹江县| 灌阳县| 罗平县| 万源市| 宾阳县| 磐石市| 积石山| 赣州市| 平舆县| 宜州市| 莱西市| 达拉特旗| 察哈| 徐水县| 兴文县| 珲春市| 灵川县| 枣强县| 大埔县| 和硕县| 平顶山市| 通辽市| 四会市| 富平县|