我正在学习golang(初学者),我一直在谷歌和stackoverflow上搜索,但我找不到答案,如果已经问过,请原谅我,但我怎么能在golang中存在mkdir.
例如,在节点I中,我将使用带有函数ensureDirSync的 fs-extra (如果阻塞当然无关紧要)
fs.ensureDir("./public");
Run Code Online (Sandbox Code Playgroud)
Alf*_*red 97
好吧,由于这个问题/答案,我想通了
import(
"os"
"path/filepath"
)
newpath := filepath.Join(".", "public")
os.MkdirAll(newpath, os.ModePerm)
Run Code Online (Sandbox Code Playgroud)
Aus*_*son 85
我遇到过两种方式:
检查目录是否存在,如果该目录不存在则创建它:
if _, err := os.Stat(path); os.IsNotExist(err) {
os.Mkdir(path, mode)
}
Run Code Online (Sandbox Code Playgroud)尝试创建目录并忽略任何问题:
_ = os.Mkdir(path, mode)
Run Code Online (Sandbox Code Playgroud)这是实现相同目的的一种替代方案,但它避免了由于两个不同的“检查..和..创建”操作而导致的竞争条件。
package main
import (
"fmt"
"os"
)
func main() {
if err := ensureDir("/test-dir"); err != nil {
fmt.Println("Directory creation failed with error: " + err.Error())
os.Exit(1)
}
// Proceed forward
}
func ensureDir(dirName string) error {
err := os.Mkdir(dirName, os.ModeDir)
if err == nil {
return nil
}
if os.IsExist(err) {
// check that the existing path is a directory
info, err := os.Stat(dirName)
if err != nil {
return err
}
if !info.IsDir() {
return errors.New("path exists but is not a directory")
}
return nil
}
return err
}
Run Code Online (Sandbox Code Playgroud)