filepath.Ext în Go

Returnează extensia fișierului: textul de la ultimul punct din ultimul element, inclusiv punctul.

Sintaxă
func Ext(path string) string

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 [ ].