目录
遇到问题
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
}