Go 检查os.Stat与os.MkdirAll

Go 检查os.Stat与os.MkdirAll,go,Go,我需要写入嵌套目录中可能存在或不存在的文件 首先,我通过os.Stat检查文件夹是否存在,如果不存在,则执行os.MkdirAll,然后打开并写入文件 我试着删除os.Stat,只做了os.MkdirAll,它似乎起了作用-这意味着os.MkdirAll是幂等的 我的问题是,做os.Stat检查有好处吗?这是一个比os.MkdirAll轻得多的操作吗?MkdirAll做的第一件事是调用os.Stat检查路径是否存在并且是一个目录 func MkdirAll(path string, perm F

我需要写入嵌套目录中可能存在或不存在的文件

首先,我通过
os.Stat
检查文件夹是否存在,如果不存在,则执行
os.MkdirAll
,然后打开并写入文件

我试着删除os.Stat,只做了
os.MkdirAll
,它似乎起了作用-这意味着
os.MkdirAll
是幂等的


我的问题是,做
os.Stat
检查有好处吗?这是一个比
os.MkdirAll
轻得多的操作吗?

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}
    }
    ...
从文档中:

若路径已经是目录,则MkdirAll不执行任何操作并返回nil

因此,不需要调用
os.Stat