我需要写入可能存在也可能不存在的嵌套目录中的文件。
首先,我通过 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}
}
...
来自文档:
If path is already a directory, MkdirAll does nothing and returns nil.
所以不,您不需要调用os.Stat
。
关于go - 使用 os.Stat 与仅 os.MkdirAll 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35661967/