filepath.IsAbs în Go

Spune dacă o cale este absolută (pornește de la rădăcina sistemului de fișiere).

Sintaxă
func IsAbs(path string) bool

Ce face filepath.IsAbs

Pe Linux și macOS, o cale este absolută dacă începe cu /. Pe Windows trebuie să aibă literă de disc și separator (C:\\date) sau să fie o cale de rețea (\\\\server\\share); \\date fără literă nu este considerată absolută.

Funcția verifică doar textul; nu contează dacă fișierul există.

Parametri

Parametru Descriere
path Calea de verificat.

Ce returnează

true pentru căi absolute, altfel false.

Exemple

Exemplul 1: Absolute și relative

Rezultate pe Linux/macOS.

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    for _, c := range []string{"/etc/hosts", "date/note.txt", "./script.sh", "~/poze", `C:\Users\ana`} {
        fmt.Printf("%-16q %v\n", c, filepath.IsAbs(c))
    }
}

Rezultat

"/etc/hosts"     true
"date/note.txt"  false
"./script.sh"    false
"~/poze"         false
"C:\\Users\\ana" false

Exemplul 2: Cale relativă la directorul aplicației

package main

import (
    "fmt"
    "path/filepath"
)

func rezolva(baza, cale string) string {
    if filepath.IsAbs(cale) {
        return cale
    }
    return filepath.Join(baza, cale)
}

func main() {
    fmt.Println(rezolva("/opt/magazin", "sabloane/email.html"))
    fmt.Println(rezolva("/opt/magazin", "/etc/magazin/setari.json"))
}

Rezultat

/opt/magazin/sabloane/email.html
/etc/magazin/setari.json

Greșeli frecvente

  • Crezi că ~/poze este o cale absolută. Tilda este înlocuită doar de shell; în Go este un director numit ~.

Comenzi înrudite

  • filepath.Abs: Transformă o cale relativă în cale absolută, pornind de la directorul curent.
  • filepath.IsLocal: Spune dacă o cale rămâne în interiorul directorului curent: nu e absolută, nu e goală și nu urcă cu „..”.
  • filepath.VolumeName: Returnează partea de volum (litera de disc sau serverul de rețea) de la începutul unei căi Windows.