Ce face os.Mkdir
os.Mkdir creează exact un director. Directorul părinte trebuie să existe deja, iar directorul cerut să nu existe. Pentru a crea o cale întreagă (a/b/c) dintr-o dată, folosește os.MkdirAll.
Argumentul perm stabilește drepturile, de obicei 0o755 (proprietarul scrie, toți pot intra și citi). Ca la fișiere, sistemul aplică masca umask.
Parametri
| Parametru | Descriere |
|---|---|
name |
Calea directorului de creat. |
perm |
Drepturile directorului, în octal, de obicei 0o755. |
Ce returnează
nil la succes sau o eroare *fs.PathError (de exemplu „file exists” sau „no such file or directory”).
Exemple
Exemplul 1: Crearea unui director
package main
import (
"fmt"
"os"
)
func main() {
if err := os.Mkdir("poze", 0o755); err != nil {
fmt.Println("eroare:", err)
return
}
info, _ := os.Stat("poze")
fmt.Println("nume:", info.Name(), "| este director:", info.IsDir())
}
Rezultat
nume: poze | este director: true
Exemplul 2: Directorul există deja
A doua creare dă eroare. errors.Is(err, fs.ErrExist) spune că motivul este existența directorului, deci putem continua liniștiți.
package main
import (
"errors"
"fmt"
"io/fs"
"os"
)
func main() {
os.Mkdir("poze", 0o755)
err := os.Mkdir("poze", 0o755)
fmt.Println("eroare:", err)
if errors.Is(err, fs.ErrExist) {
fmt.Println("Directorul era deja creat, continuăm.")
}
}
Rezultat
eroare: mkdir poze: file exists
Directorul era deja creat, continuăm.
Exemplul 3: Părintele lipsește
package main
import (
"fmt"
"os"
)
func main() {
err := os.Mkdir("vacanta/2025/iasi", 0o755)
fmt.Println("Mkdir:", err)
err = os.MkdirAll("vacanta/2025/iasi", 0o755)
fmt.Println("MkdirAll:", err)
}
Rezultat
Mkdir: mkdir vacanta/2025/iasi: no such file or directory
MkdirAll: <nil>
Greșeli frecvente
- Folosești
Mkdirpentru o cale cu mai multe niveluri care nu există. DoarMkdirAllcreează și părinții. - Tratezi „file exists” ca eroare gravă. Dacă vrei doar să te asiguri că directorul există, verifică
fs.ErrExistsau foloseșteMkdirAll, care nu dă eroare când directorul există. - Dai drepturi
0o644unui director. Fără bitul de execuție (x) nimeni nu poate intra în director; folosește0o755.
Comenzi înrudite
os.MkdirAll: Creează un director împreună cu toți părinții care lipsesc; nu dă eroare dacă directorul există deja.os.MkdirTemp: Creează un director temporar nou, cu nume unic, și returnează calea lui.os.Remove: Șterge un fișier sau un director gol.os.IsNotExist: IsNotExist spune dacă o eroare înseamnă „fișierul nu există”; IsExist, dacă înseamnă „există deja”.