Ce face filepath.Abs
filepath.Abs lipește calea de directorul curent (os.Getwd) dacă nu este deja absolută, apoi o curăță cu Clean. Nu verifică dacă fișierul există și nu rezolvă legăturile simbolice.
Rezultatul depinde de locul din care rulezi programul. E util în mesaje („fișierul a fost salvat în …”) și când transmiți o cale altui program care rulează în alt director.
Parametri
| Parametru | Descriere |
|---|---|
path |
Calea, relativă sau absolută. |
Ce returnează
Calea absolută și nil, sau o eroare dacă directorul curent nu poate fi aflat.
Exemple
Exemplul 1: Calea absolută a unui fișier
package main
import (
"fmt"
"path/filepath"
)
func main() {
abs, err := filepath.Abs("date/note.csv")
if err != nil {
fmt.Println("eroare:", err)
return
}
fmt.Println(abs)
}
Rezultat când programul rulează din /home/ana/proiecte/catalog
/home/ana/proiecte/catalog/date/note.csv
Exemplul 2: Ce face Abs, verificat
Calea relativă este lipită de directorul curent; o cale deja absolută doar se curăță.
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
wd, _ := os.Getwd()
abs, _ := filepath.Abs("date/../note.csv")
fmt.Println(abs == filepath.Join(wd, "note.csv"))
abs, _ = filepath.Abs("/var/www/../log//nginx")
fmt.Println(abs)
}
Rezultat
true
/var/log/nginx
Greșeli frecvente
- Crezi că
Absverifică existența fișierului. Doar construiește textul căii. - Apelezi
Absdupăos.Chdirși primești alt rezultat decât înainte. Directorul curent face parte din calcul.
Comenzi înrudite
filepath.Rel: Calculează calea relativă care duce de la directorul basepath la targpath.filepath.IsAbs: Spune dacă o cale este absolută (pornește de la rădăcina sistemului de fișiere).os.Getwd: Returnează calea absolută a directorului curent (working directory).filepath.EvalSymlinks: Returnează calea reală, după ce urmează toate legăturile simbolice din ea.