mkdir 如果不存在使用 golang

新手上路,请多包涵

我正在学习 golang(初学者),我一直在 google 和 stackoverflow 上搜索,但我找不到答案,如果已经问过,请原谅,但如果 golang 中不存在,我怎么能 mkdir。

例如,在节点中,我会使用 fs-extra 和函数 ensureDirSync (当然,如果不关心阻塞的话)

 fs.ensureDir("./public");

原文由 Alfred 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 791
2 个回答

我遇到了两种方式:

  1. 检查目录是否存在,如果不存在则创建它:
    if _, err := os.Stat(path); os.IsNotExist(err) {
       err := os.Mkdir(path, mode)
       // TODO: handle error
   }

但是,这容易受到竞争条件的影响:路径可能由其他人在 os.Stat 调用和 os.Mkdir 调用之间创建。

  1. 尝试创建目录并忽略任何问题(不建议忽略错误):
    _ = os.Mkdir(path, mode)

原文由 Austin Hanson 发布,翻译遵循 CC BY-SA 4.0 许可协议

好的,由于这个 问题/答案,我明白了

import(
    "os"
    "path/filepath"
)

newpath := filepath.Join(".", "public")
err := os.MkdirAll(newpath, os.ModePerm)
// TODO: handle error

MkdirAll 的相关 Go 文档:

MkdirAll 创建一个名为 path 的目录,以及任何必要的父目录,并返回 nil,否则返回错误。

如果 path 已经是一个目录,MkdirAll 什么都不做并返回 nil。

原文由 Alfred 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题