为了账号安全,请及时绑定邮箱和手机立即绑定

使用 os.Stat 与仅使用 os.MkdirAll 检查

使用 os.Stat 与仅使用 os.MkdirAll 检查

Go
眼眸繁星 2021-12-20 10:07:32
我需要写入可能存在也可能不存在的嵌套目录中的文件。首先,我通过检查文件夹是否存在os.Stat,os.MkdirAll如果它不存在,然后打开并写入文件。我尝试删除 os.Stat 并执行os.MkdirAll,它似乎有效 - 意思os.MkdirAll是幂等的。我的问题是,做os.Stat检查有好处吗?这是一个比os.MkdirAll?轻得多的操作?
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

首先要做的MkdirAll是调用os.Stat检查路径是否存在并且是目录。


func MkdirAll(path string, perm FileMode) error {

    // Fast path: if we can tell whether path is a directory or file, stop with success or error.

    dir, err := Stat(path)

    if err == nil {

        if dir.IsDir() {

            return nil

        }

        return &PathError{"mkdir", path, syscall.ENOTDIR}

    }

    ...

从文档:


如果 path 已经是一个目录,则 MkdirAll 什么都不做并返回 nil。


所以不,你不需要调用os.Stat.


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号