推荐使用 os.Stat 结合 os.IsNotExist 判断文件是否存在:os.Stat 获取文件信息,若 err 非 nil 且 os.IsNotExist(err) 为真则不存在;否则视为存在(含目录、符号链接等)。
在 Go 语言中,检查文件是否存在最常用、最推
荐的方式是使用 os.Stat,而不是先用 os.IsNotExist 或直接判断错误类型——因为 os.Stat 本身就能安全、准确地反映文件状态,且兼容所有操作系统。
os.Stat 尝试获取文件的元信息(如大小、修改时间、权限等)。如果文件不存在,它会返回一个非 nil 的 error;若存在,则 error 为 nil。关键点在于:不能只看 error 是否为 nil,还要用 os.IsNotExist 显式判断错误类型,避免把其他错误(如权限不足、路径过长)误判为“不存在”。
示例代码:
func fileExists(path string) bool {
_, err := os.Stat(path)
return !os.IsNotExist(err)
}
这个函数简洁可靠:只要不是 “文件不存在” 错误,就认为文件存在(包括目录、符号链接等,只要路径可访问)。
常见错误写法:
// ❌ 错误:err 可能是 nil,此时 os.IsNotExist(nil) 返回 false,逻辑反了
if os.IsNotExist(err) { ... }
正确做法是先确认 err 非 nil,再判断是否为 NotExist:
err != nil && os.IsNotExist(err) → 确实不存在err == nil → 存在(或至少可访问)err != nil && !os.IsNotExist(err) → 其他错误(如 permission denied)os.Stat 返回的 os.FileInfo 支持 IsDir() 方法。结合使用可精确识别:
func isRegularFile(path string) bool {
info, err := os.Stat(path)
if err != nil || info.IsDir() {
return false
}
return true
}
注意:符号链接默认会被自动解析(即检查它指向的目标),如需检查链接本身是否存在,用 os.Lstat。
os.Stat:跟随符号链接,返回目标文件的信息os.Lstat:不跟随符号链接,返回链接本身的信息(可用于判断软链接是否存在)info, err := os.Lstat(path)
if err == nil && info.Mode()&os.ModeSymlink != 0 {
// 是符号链接
}
基本上就这些。用好 os.Stat + os.IsNotExist 组合,既简洁又健壮,是 Go 中检测文件存在的标准做法。
# go
# golang
# 操作系统
# 区别
# Error
# nil
# 不存在
# 是否存在
# 就能
# 推荐使用
# 而不
# 要用
# 只想
# 如需
# 只看
# 它会
相关文章:
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何通过FTP空间快速搭建安全高效网站?
制作营销网站公司,淘特是干什么用的?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
如何选择高性价比服务器搭建个人网站?
建站之星如何修改网站生成路径?
招贴海报怎么做,什么是海报招贴?
深圳网站制作平台,深圳市做网站好的公司有哪些?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
开封网站制作公司,网络用语开封是什么意思?
javascript基本数据类型及类型检测常用方法小结
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
宝塔建站后网页无法访问如何解决?
C#如何使用XPathNavigator高效查询XML
如何在云主机上快速搭建网站?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
网站制作公司排行榜,四大门户网站排名?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
再谈Python中的字符串与字符编码(推荐)
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
免费网站制作appp,免费制作app哪个平台好?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何选择网络建站服务器?高效建站必看指南
宝塔Windows建站如何避免显示默认IIS页面?
定制建站方案优化指南:企业官网开发与建站费用解析
济南网站制作的价格,历城一职专官方网站?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
全景视频制作网站有哪些,全景图怎么做成网页?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
如何在Golang中使用replace替换模块_指定本地或远程路径
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何在Tomcat中配置并部署网站项目?
自助网站制作软件,个人如何自助建网站?
Thinkphp 中 distinct 的用法解析
重庆网站制作公司哪家好,重庆中考招生办官方网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何用wdcp快速搭建高效网站?
北京网站制作网页,网站升级改版需要多久?
图册素材网站设计制作软件,图册的导出方式有几种?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
宝塔面板创建网站无法访问?如何快速排查修复?
如何用景安虚拟主机手机版绑定域名建站?
如何高效配置香港服务器实现快速建站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何快速使用云服务器搭建个人网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
宝塔新建站点报错如何解决?
公众号网站制作网页,微信公众号怎么制作?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何选择美橙互联多站合一建站方案?
*请认真填写需求信息,我们会在24小时内与您取得联系。