go語(yǔ)言如何判斷文件是否存在?其實(shí)要解決這個(gè)問(wèn)題也不難,這篇文章給出了相對(duì)應(yīng)的分析和解答,下面我們一起來(lái)看看解決方法吧。
成都創(chuàng)新互聯(lián)致力于做網(wǎng)站、成都網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過(guò)標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場(chǎng)競(jìng)爭(zhēng)中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!通常在讀寫(xiě)文件之前,需要判斷文件或目錄是否存在,不然某些處理方法可能會(huì)使程序出錯(cuò)。所以最好在做任何操作之前,先判斷文件是否存在。
golang判斷文件或文件夾是否存在的方法為使用os.Stat()函數(shù)返回的錯(cuò)誤值進(jìn)行判斷:
1、如果返回的錯(cuò)誤為nil,說(shuō)明文件或文件夾不存在
2、如果返回的錯(cuò)誤類型使用os.IsNotExist()判斷為true,說(shuō)明文件或文件夾存在
3、如果返回的錯(cuò)誤為其它類型,則不確定是否在存在
// 判斷所給路徑文件/文件夾是否存在 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) }
注:
當(dāng)我們的FileExist返回true時(shí),其實(shí)文件并不一定存在。
當(dāng)我們對(duì)目標(biāo)path中的某一部分沒(méi)有可讀權(quán)限時(shí),os.Lstat和syscall.Access同樣會(huì)返回error,不過(guò)這個(gè)error不會(huì)讓os.IsNotExist返回true。
當(dāng)文件不存在而你對(duì)文件所在的目錄或者它的上層目錄沒(méi)有訪問(wèn)權(quán)限時(shí),F(xiàn)ileExist依舊會(huì)返回true,bug就在這時(shí)發(fā)生了。
所以重要的一點(diǎn)是在判斷文件是否存在前應(yīng)該先判斷自己對(duì)文件及其路徑是否有訪問(wèn)權(quán)限。
看完這篇文章,你們學(xué)會(huì)go語(yǔ)言判斷文件是否存在的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。