首頁  >  文章  >  後端開發  >  golang讀取文件是否存在

golang讀取文件是否存在

尚
原創
2020-03-27 10:32:402749瀏覽

golang讀取文件是否存在

判斷一個檔案是否存在是一個相當常見的需求,在golang中也有多種方案實現這項功能。

跨平台實作

跨平台實現的想法很簡單,如果某個檔案不存在,那麼使用os.Lstat就一定會回傳error,只要判斷error是否代表文件不存在即可。

也許你注意到了有些程式碼會使用os.Open來完成上述工作,不過最好不要這麼做,因為雖然兩者完成的功能沒有區別,但open和stat的呼叫開銷是不同的,後者要小於前者,而且對於判斷檔案是否存在,檢查它的元資料要比直接嘗試開啟它更合理。

那麼來看看實作的程式碼:

func FileExist(path string) bool {
  _, err := os.Lstat(path)  
return !os.IsNotExist(err)
}

POSIX平台實作

如果你的程式是針對POSIX平台的(例如UNIX、Linux等),那麼還有更簡單的方案-syscall.Access。

syscall.Access提供了使用者檢查檔案元資訊的手段,通常它被用來檢查檔案權限以及檔案的存在性。

透過使用syscall.F_OK標誌檢查文件,如果不存在則會返回和os.Lstat一樣的error:

func FileExist(path string) bool {
  err := syscall.Access(path, syscall.F_OK)
  return !os.IsNotExist(err)
}

這種實現的最大優勢在於它簡單而直觀,但是它無法在Windows上使用。

更多golang知識請關注PHP中文網golang教學欄位。

以上是golang讀取文件是否存在的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn