J'apprends le golang (débutant) et j'ai cherché à la fois sur google et sur stackoverflow, mais je ne pouvais pas trouver de réponse, alors excusez-moi si j'ai déjà posé la question, mais comment puis-je mkdir s'il n'existe pas dans golang.
Par exemple, dans le noeud, j'utiliserais fs-extra avec la fonction EnsureDirSync (si le blocage n'a pas d'importance, bien sûr)
fs.ensureDir("./public");
J'ai couru de deux manières:
Vérifiez l'existence du répertoire et créez-le s'il n'existe pas:
if _, err := os.Stat(path); os.IsNotExist(err) {
os.Mkdir(path, mode)
}
Essayez de créer le répertoire et ignorez tous les problèmes:
_ = os.Mkdir(path, mode)
Ok je l'ai compris grâce à ceci question/réponse
import(
"os"
"path/filepath"
)
newpath := filepath.Join(".", "public")
os.MkdirAll(newpath, os.ModePerm)
MkdirAll crée un répertoire nommé chemin, ainsi que tous les parents nécessaires, et renvoie
nil
, ou bien renvoie unerror
.
C'est une alternative pour atteindre le même but, mais cela évite la situation critique provoquée par deux opérations distinctes "vérifier .. et .. créer".
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 || os.IsExist(err) {
return nil
} else {
return err
}
}