2016-06-20 11 views
18

Io sto imparando golang (principiante) e ho cercato su google e stackoverflow ma non sono riuscito a trovare una risposta quindi scusami se mi hai già chiesto, ma come posso mkdir se non esiste in golang .mkdir se non esiste usando golang

Per esempio nel nodo vorrei utilizzare fs-extra con la funzione ensureDirSync (se il blocco è di alcuna preoccupazione, naturalmente)

fs.ensureDir("./public"); 

risposta

31

Ho eseguito due modi:

  1. Verificare la disponibilità L'esistenza di directory e di creare se non esiste:

    if _, err := os.Stat(path); os.IsNotExist(err) { 
        os.Mkdir(path, mode) 
    } 
    
  2. tentativo di creare la directory e ignorare eventuali problemi:

    _ = os.Mkdir(path, mode) 
    
+1

Grazie per la risposta :). Funzionerà anche, ma penso che la mia risposta sotto la quale ho trovato anche tramite stackoverflow sia ancora più bella (ma non di molto)? – Alfred

+1

Accetterò la tua risposta tra 3 minuti – Alfred

37

Ok ho capito grazie a questa question/answer

import(
    "os" 
    "path/filepath" 
) 

newpath := filepath.Join(".", "public") 
os.MkdirAll(newpath, os.ModePerm) 
+2

Questa è la risposta migliore e utilizza lo stdlib. Ciò è particolarmente utile se usato insieme a os.Create, dove potrebbe essere necessario creare anche sub-dirs (usando 'filepath.Dir (" path/to/file ")' sul percorso completo del file è un buon approccio in i miei occhi – Paddie

+3

Si potrebbe voler controllare qualsiasi risposta di errore sulla chiamata MkdirAll come: ' se err: = os.MkdirAll ("/somepath/", os.ModeDir); err! = nil { fmt.Println ("Impossibile creare la directory nascosta.") } ' –

5

È possibile utilizzare os.Stat per verificare se un determinato percorso esiste.
In caso contrario, è possibile utilizzare os.Mkdir per crearlo.