golang中判断文件是否存在

polaris · 2013-03-21 12:12:23 · 26040 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2013-03-21 12:12:23 的主题,其中的信息可能已经有所发展或是发生改变。

代码如下:

// 检查文件或目录是否存在
// 如果由 filename 指定的文件或目录存在则返回 true,否则返回 false
func Exist(filename string) bool {
    _, err := os.Stat(filename)
    return err == nil || os.IsExist(err)
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

26040 次点击  ∙  3 赞  
加入收藏 微博
9 回复  |  直到 2020-11-05 09:12:12
Jf_Lee
Jf_Lee · #1 · 12年之前

可以支持语法高亮功能不?

polaris
polaris · #2 · 12年之前

这个得研究研究

Jf_Lee
Jf_Lee · #3 · 12年之前

blackfriday可以支持Go语法高亮

polaris
polaris · #4 · 12年之前

已经支持语法高亮了。

jianfengye110
jianfengye110 · #5 · 12年之前

用os.Open也行

os.Open(filename)
polaris
polaris · #6 · 12年之前
jianfengye110jianfengye110 #5 回复

用os.Open也行 os.Open(filename)

Open应该开销更大,之后还得Close

一般都会使用Stat,PHP就是这么做的。

wishyong
wishyong · #7 · 5年之前

这个判断很有问题,怎么没有人说呢,如果文件存在,但是你没有权限 stat ,这个时候,给一个 文件不存在的错误可不太好。

调用这个方法,先判断 err 是否为空,

  1. err 不为空,证明是其他错误,需要处理错误(比如普通用户访问 root 下的目录会显示权限不足)。
  2. err 为空,在判断 bool 值是 true 或者 false,true 表示文件存在,false 表示文件不存在。
func IsFileExist(fileName string) (error, bool) {
    _, err := os.Stat(fileName)
    if err == nil {
        return nil, true
    }
    if os.IsNotExist(err) {
        return nil, false
    }
    return err, false
}
Reese1995
Reese1995 · #8 · 4年之前

太啰嗦了。

func Exist(filename string) bool { _, err := os.Stat(filename) return err == nil || !os.IsNotExist(err) }

zzustu
zzustu · #9 · 4年之前
Reese1995Reese1995 #8 回复

太啰嗦了。 func Exist(filename string) bool { _, err := os.Stat(filename) return err == nil || !os.IsNotExist(err) }

有道理,调用者只关心寸不存在,不关心如果不存在的原因,所以吧err也返回出去,也会增加调用者的心智负担

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传