我需要写入可能存在也可能不存在的嵌套目录中的文件。首先,我通过检查文件夹是否存在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.
- 1 回答
- 0 关注
- 172 浏览
添加回答
举报
0/150
提交
取消