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

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

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

我尝试删除 os.Stat 并执行os.MkdirAll,它似乎有效 - 意思os.MkdirAll是幂等的。

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


眼眸繁星
浏览 174回答 1
1回答

四季花海

首先要做的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.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go