open golang files go mkdir

files - mkdir si no existe usando golang



files golang (4)

Bien, lo descubrí gracias a esta question/answer

import( "os" "path/filepath" ) newpath := filepath.Join(".", "public") os.MkdirAll(newpath, os.ModePerm)

MkdirAll crea un directorio llamado ruta, junto con los padres necesarios, y devuelve nil , o devuelve un error .

Estoy aprendiendo golang (principiante) y he estado buscando tanto en google como en stackoverflow, pero no pude encontrar una respuesta, así que discúlpeme si ya me lo preguntaron, pero ¿cómo puedo mkdir si no existe en golang?

Por ejemplo, en el nodo, usaría fs-extra con la función ensureDirSync (si el bloqueo no es una preocupación, por supuesto)

fs.ensureDir("./public");


Esta es una alternativa para lograr lo mismo, pero evita la condición de carrera causada por tener dos operaciones distintas de "verificar ... y ... crear".

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 } }


Me he encontrado con dos maneras:

  1. Verifique la existencia del directorio y créelo si no existe:

    if _, err := os.Stat(path); os.IsNotExist(err) { os.Mkdir(path, mode) }

  2. Intente crear el directorio e ignore cualquier problema:

    _ = os.Mkdir(path, mode)


Puede usar os.Stat para verificar si existe una ruta determinada.
Si no es así, puede usar os.Mkdir para crearlo.