3 回答
TA贡献1794条经验 获得超8个赞
os.Mkdir
用于创建单个目录。要创建文件夹路径,请尝试使用:
os.MkdirAll(folderPath, os.ModePerm)
Go 文档
func MkdirAll(path string, perm FileMode) 错误
MkdirAll 创建一个名为 path 的目录以及任何必要的父目录,并返回 nil,否则返回错误。权限位 perm 用于 MkdirAll 创建的所有目录。如果 path 已经是一个目录,则 MkdirAll 什么都不做并返回 nil。
编辑:
更新为正确使用os.ModePerm
。
对于文件路径的串联,请使用path/filepath
@Chris 的回答中所述的包。
TA贡献1841条经验 获得超3个赞
这样您就不必使用任何幻数:
os.MkdirAll(newPath, os.ModePerm)
此外,您可以使用:
import "path/filepath" path := filepath.Join(someRootPath, someSubPath)
以上在每个平台上自动为您使用正确的分隔符。
TA贡献1820条经验 获得超10个赞
可以使用如下实用方法来解决此问题。
import (
"os"
"path/filepath"
"log"
)
func ensureDir(fileName string) {
dirName := filepath.Dir(fileName)
if _, serr := os.Stat(dirName); serr != nil {
merr := os.MkdirAll(dirName, os.ModePerm)
if merr != nil {
panic(merr)
}
}
}
func main() {
_, cerr := os.Create("a/b/c/d.txt")
if cerr != nil {
log.Fatal("error creating a/b/c", cerr)
}
log.Println("created file in a sub-directory.")
}
- 3 回答
- 0 关注
- 183 浏览
添加回答
举报