關於golang判斷文件夾是否存在


今天在寫代碼遇到一個問題,如下代碼所示

遇到問題

func Exists() {
	getwd, _ := os.Getwd()
	fmt.Println(getwd)
	_, err := os.Stat(getwd) //os.Stat獲取文件信息
	fmt.Println(err) // <nil>
	
	fmt.Println(os.IsExist(err)) // false
	fmt.Println(os.IsNotExist(err)) // false

	_, err1 := os.Stat("/Users/qxqzx/GoWork/src/go-exam/runtime/logs2") //這個文件夾不存在
	fmt.Println(os.IsExist(err1)) // false
	fmt.Println(os.IsNotExist(err1)) // true

	// 打印結果
	///Users/qxqzx/GoWork/src/go-exam
	//false
	//false
	//false
	//true
}

關於os.Stat() 在文件夾存在的時候,error返回的是nil,這時候用os.IsExist(err)os.IsNotExist(err) 都是false的,所以當文件夾存在即err == nil 時候,不用這兩個方法再次判斷。
err != nil的時候,可以直接用os.IsNotExist(err)os.IsExist(err) 方法判斷是否不存在。

科學的判斷方式

golang判斷文件或文件夾是否存在的方法為使用os.Stat()函數返回的錯誤值進行判斷:

  • 如果返回的錯誤為nil,說明文件或文件夾存在
  • 如果返回的錯誤類型使用os.IsNotExist() 或者 os.IsExist() 判斷為true,說明文件或文件夾不存在
  • 如果返回的錯誤為其它類型,則不確定是否在存在
// 判斷所給路徑文件/文件夾是否存在1
func Exists(path string) bool {
	_, err := os.Stat(path)    //os.Stat獲取文件信息
	if err != nil {
		if os.IsExist(err) {
			return true
		}
		return false
	}
	return true
}

// 判斷所給路徑文件/文件夾是否存在2
func Exists(path string) bool {
	_, err := os.Stat(path)    //os.Stat獲取文件信息
	if err != nil {
		if os.IsNotExist(err) {
			return false
		}
		return true
	}
	return true
}


// 判斷所給路徑文件/文件夾是否存在3  直接用os.IsNotExist(err)
func Exists(path string) bool {
	_, err := os.Stat(path)    //os.Stat獲取文件信息
	if os.IsNotExist(err) {
		return false
	}
	return true
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM