Ce face filepath.Ext
filepath.Ext returnează sufixul care începe cu ultimul . din numele fișierului: ".jpg", ".gz". Dacă nu există punct în ultimul element, returnează "".
Extensia păstrează literele mari și mici exact (.JPG ≠ .jpg); pentru comparații folosește strings.ToLower sau strings.EqualFold. Pentru arhiva.tar.gz primești doar .gz.
Parametri
| Parametru | Descriere |
|---|---|
path |
Calea sau numele fișierului. |
Ce returnează
Extensia, cu punct, sau "".
Exemple
Exemplul 1: Extensii diverse
package main
import (
"fmt"
"path/filepath"
)
func main() {
for _, c := range []string{"poza.JPG", "arhiva.tar.gz", "Makefile", ".bashrc", "date.v2/fisier"} {
fmt.Printf("%-16q -> %q\n", c, filepath.Ext(c))
}
}
Rezultat
"poza.JPG" -> ".JPG"
"arhiva.tar.gz" -> ".gz"
"Makefile" -> ""
".bashrc" -> ".bashrc"
"date.v2/fisier" -> ""
Exemplul 2: Sortarea fișierelor pe tipuri
package main
import (
"fmt"
"path/filepath"
"strings"
)
func main() {
tipuri := map[string]string{".jpg": "imagine", ".png": "imagine", ".pdf": "document", ".mp4": "video"}
for _, f := range []string{"vacanta.JPG", "contract.pdf", "film.mp4", "notite.txt"} {
tip, ok := tipuri[strings.ToLower(filepath.Ext(f))]
if !ok {
tip = "necunoscut"
}
fmt.Printf("%-13s %s\n", f, tip)
}
}
Rezultat
vacanta.JPG imagine
contract.pdf document
film.mp4 video
notite.txt necunoscut
Greșeli frecvente
- Te bazezi pe extensie ca să afli tipul real al unui fișier încărcat de utilizator. Oricine poate redenumi un fișier; verifică și conținutul (de exemplu cu
http.DetectContentType). - Compari
Ext(f) == ".jpg"și ratezi.JPG.
Comenzi înrudite
filepath.Base: Returnează ultimul element al unei căi: numele fișierului (sau al ultimului director).filepath.Match: Verifică dacă un nume se potrivește unui model de tip shell (*, ?, [ ]), fără să acceseze discul.filepath.Glob: Returnează toate fișierele de pe disc ale căror nume se potrivesc unui model cu *, ? și [ ].