Saltar al contenido

¿Cómo crear directorios anidados usando Mkdir en Golang?

Solución:

os.Mkdir se utiliza para crear un único directorio. Para crear una ruta de carpeta, intente usar:

os.MkdirAll(folderPath, os.ModePerm)

Ir documentación

func MkdirAll (cadena de ruta, perm FileMode) error

MkdirAll crea un directorio llamado ruta, junto con los padres necesarios, y devuelve nil, o devuelve un error. Los bits de permiso perm se utilizan para todos los directorios que crea MkdirAll. Si la ruta ya es un directorio, MkdirAll no hace nada y devuelve nil.

Editar:

Actualizado para usar correctamente os.ModePerm en lugar de.
Para la concatenación de rutas de archivo, use el paquete path/filepath como se describe en la respuesta de @Chris.

De esta forma, no es necesario utilizar números mágicos:

os.MkdirAll(newPath, os.ModePerm)

Además, en lugar de usar + para crear rutas, puede usar:

import "path/filepath"
path := filepath.Join(someRootPath, someSubPath)

Lo anterior utiliza los separadores correctos automáticamente en cada plataforma para usted.

Si el problema es crear todos los directorios principales necesarios, podría considerar usar os.MkDirAll()

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

Path_test.go es una buena ilustración sobre cómo usarlo:

func TestMkdirAll(t *testing.T) {
    tmpDir := TempDir()
    path := tmpDir + "/_TestMkdirAll_/dir/./dir2"
    err := MkdirAll(path, 0777)
    if err != nil {
    t.Fatalf("MkdirAll %q: %s", path, err)
    }
    defer RemoveAll(tmpDir + "/_TestMkdirAll_")
...
}

(Asegúrese de especificar un valor de permiso razonable, como se menciona en esta respuesta)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *