Avatar ·

如何在Go中创建文件夹(如果不存在)

大家好!我刚开始学习Go,遇到了一个问题。我需要在程序中创建一个用于保存日志的目录,但仅当它不存在时才创建。如果文件夹已经存在,则无需执行任何操作,只需继续工作。 问题在于,标准函数os.Mkdir()在目录已存在时会返回错误。我尝试过先通过os.Stat()检查,然后再创建,但这看起来像是一个临时解决方案。在其他语言(例如Python)中有os.makedirs(exist_ok=True),在PHP中有mkdir($path, 0777, true)。Go中是否有类似的功能? 以下是我当前的代码,我觉得它不太对劲: ```go package main import ( "fmt" "os" ) func main() { path := "./logs" if _, err := os.Stat(path); os.IsNotExist(err) { err := os.Mkdir(path, 0755) if err != nil { fmt.Println("创建文件夹时出错:", err) } } } ``` 这段代码可以工作,但我听说它不是线程安全的,而且可能...