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
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值