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

标签 go

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

首先,我通过 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/

相关文章:

http - 如何在不使用 golang 中的 ioutil.ReadAll 的情况下检索网站源

unit-testing - init() 函数能否安全地启动 go 例程,包括 along 测试?

go - 在 docker exec 响应开始时解释并删除无用的字节

postgresql - 将自定义类型数组插入 postgres

go - 《The Little Go Book》中用单锁解释死锁

c# - 消费者不拉卡夫卡消息

Golang 的 Github Oauth token

parsing - 将 bufio.Scanner 的阅读器包装在 bufio.Reader 中有什么好处吗?

go - DDD 从值对象列表中删除文本值对象

string - 如何获取字符串中的字符数