Ce face filepath.Dir
filepath.Dir elimină ultimul element și curăță rezultatul cu Clean. Pentru o cale fără separator (doar un nume de fișier) returnează ".", adică directorul curent. Pentru o cale goală returnează tot ".".
Este utilă înainte de a crea un fișier: os.MkdirAll(filepath.Dir(cale), 0o755) creează directorul în care va sta fișierul.
Parametri
| Parametru | Descriere |
|---|---|
path |
Calea. |
Ce returnează
Directorul care conține ultimul element.
Exemple
Exemplul 1: Partea de director
package main
import (
"fmt"
"path/filepath"
)
func main() {
for _, c := range []string{"/home/ana/cv.pdf", "poze/vacanta/mare.jpg", "nota.txt", "/etc/", "/"} {
fmt.Printf("%-24q -> %q\n", c, filepath.Dir(c))
}
}
Rezultat
"/home/ana/cv.pdf" -> "/home/ana"
"poze/vacanta/mare.jpg" -> "poze/vacanta"
"nota.txt" -> "."
"/etc/" -> "/etc"
"/" -> "/"
Exemplul 2: Creare automată a directorului
package main
import (
"fmt"
"os"
"path/filepath"
)
func salveaza(cale string, date []byte) error {
if err := os.MkdirAll(filepath.Dir(cale), 0o755); err != nil {
return err
}
return os.WriteFile(cale, date, 0o644)
}
func main() {
err := salveaza("export/2025/martie/clienti.csv", []byte("Ana,Iași\n"))
fmt.Println("eroare:", err)
date, _ := os.ReadFile("export/2025/martie/clienti.csv")
fmt.Print(string(date))
}
Rezultat
eroare: <nil>
Ana,Iași
Greșeli frecvente
- Te aștepți ca
Dir("poze/vacanta/")să deapoze. Cu/final, ultimul element este gol, deci rezultatul estepoze/vacanta.
Comenzi înrudite
filepath.Base: Returnează ultimul element al unei căi: numele fișierului (sau al ultimului director).filepath.Split: Împarte o cale în director (cu separatorul final) și numele fișierului.os.MkdirAll: Creează un director împreună cu toți părinții care lipsesc; nu dă eroare dacă directorul există deja.