通常在讀寫檔案之前,需要判斷檔案或目錄是否存在,不然某些處理方法可能會使程式出錯。所以最好在做任何操作之前,先判斷文件是否存在。
golang判斷檔案或資料夾是否存在的方法為使用os.Stat()函數傳回的錯誤值進行判斷:
1、如果傳回的錯誤為nil,說明檔案或文件夾不存在
2、如果傳回的錯誤型別使用os.IsNotExist()判斷為true,說明檔或資料夾存在
3、如果傳回的錯誤為其它型別,則不確定是否在存在
// 判断所给路径文件/文件夹是否存在 func Exists(path string) bool { _, err := os.Stat(path) //os.Stat获取文件信息 if err != nil { if os.IsExist(err) { return true } return false } return true } // 判断所给路径是否为文件夹 func IsDir(path string) bool { s, err := os.Stat(path) if err != nil { return false } return s.IsDir() } // 判断所给路径是否为文件 func IsFile(path string) bool { return !IsDir(path) }
註:
當我們的FileExist回傳true時,其實檔案不一定存在。
當我們對目標path中的某部分沒有可讀權限時,os.Lstat和syscall.Access同樣會回傳error,不過這個error不會讓os.IsNotExist回傳true。
當檔案不存在而你對檔案所在的目錄或它的上層目錄沒有存取權限時,FileExist依舊會回傳true,bug就在這時發生了。
所以重要的一點是在判斷檔案是否存在前應該先判斷自己對檔案及其路徑是否有存取權限。
更多golang知識請關注golang教程欄位。
以上是golang判斷文件是否存在的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!