2016-06-20 13 views
18

Uczę się golang (początkujący) i szukałem zarówno google, jak i stackoverflow, ale nie mogłem znaleźć odpowiedzi, więc przepraszam, jeśli już zapytałem, ale jak mogę mkdir jeśli nie istnieje w golangu .mkdir jeśli nie istnieje za pomocą golang

Na przykład w węźle użyłbym fs-extra z funkcją ensureDirSync (jeśli blokada jest nie dotyczą oczywiście)

fs.ensureDir("./public"); 

Odpowiedz

31

Przebiegłem na dwa sposoby:

  1. Sprawdź, czy Istnienie katalogu i utworzyć go, jeśli nie istnieje:

    if _, err := os.Stat(path); os.IsNotExist(err) { 
        os.Mkdir(path, mode) 
    } 
    
  2. próba stworzenia katalogu i zignorować wszelkie problemy:

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

Dzięki za odpowiedź :). To też będzie działać, ale myślę, że moja odpowiedź poniżej której również znalazłem za pośrednictwem stackoverflow jest jeszcze ładniejsza (ale nie za dużo)? – Alfred

+1

Zaakceptuję twoją odpowiedź w 3 minuty – Alfred

37

Dobrze I zdobione go dzięki tej question/answer

import(
    "os" 
    "path/filepath" 
) 

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

To jest najlepsza odpowiedź i korzysta ze stdlib. Jest to szczególnie przydatne, gdy używa się go razem z os.Create, gdzie może być konieczne utworzenie podkatalogów również (używając 'filepath.Dir (" path/to/file ")' na pełnej ścieżce do pliku jest miłym podejściem w moje oczy: – Paddie

+3

Może zajść potrzeba sprawdzenia jakiejkolwiek odpowiedzi na błąd w wywołaniu MkdirAll, jak: ' , jeśli err: = os.MkdirAll ("/somepath/", os.ModeDir); err! = zero { fmt.Println ("Nie można utworzyć ukrytego katalogu.") } ' –

5

Można użyć os.Stat aby sprawdzić, czy danej ścieżki istnieje. Jeśli nie, możesz użyć os.Mkdir, aby go utworzyć.

Powiązane problemy