Ce face os.File.Name
Name returnează exact calea folosită la deschidere: dacă ai scris os.Open("date/note.txt"), primești "date/note.txt". Nu este neapărat o cale absolută și nu se actualizează dacă fișierul este redenumit între timp.
Este utilă în mesaje de eroare și pentru fișierele temporare create cu os.CreateTemp, al căror nume nu îl cunoști dinainte.
Ce returnează
Numele fișierului, ca text.
Exemple
Exemplul 1: Numele unui fișier deschis
package main
import (
"fmt"
"os"
)
func main() {
os.Mkdir("date", 0o755)
f, _ := os.Create("date/comenzi.csv")
defer f.Close()
fmt.Println(f.Name())
fmt.Println(os.Stdout.Name())
}
Rezultat
date/comenzi.csv
/dev/stdout
Exemplul 2: Fișier temporar cu nume aleatoriu
os.CreateTemp alege numele; îl aflăm cu Name.
package main
import (
"fmt"
"os"
"path/filepath"
"strings"
)
func main() {
f, err := os.CreateTemp(".", "export-*.csv")
if err != nil {
fmt.Println("eroare:", err)
return
}
defer os.Remove(f.Name())
defer f.Close()
nume := filepath.Base(f.Name())
fmt.Println("începe cu export-:", strings.HasPrefix(nume, "export-"))
fmt.Println("se termină cu .csv:", strings.HasSuffix(nume, ".csv"))
}
Rezultat
începe cu export-: true
se termină cu .csv: true
Greșeli frecvente
- Te aștepți la cale absolută. Pentru ea folosește
filepath.Abs(f.Name()).
Comenzi înrudite
os.File: Tipul care reprezintă un fișier deschis; îl obții cu os.Open, os.Create sau os.OpenFile.os.File.Stat: Returnează informații despre fișierul deschis: nume, dimensiune, drepturi, data modificării, dacă e director.filepath.Base: Returnează ultimul element al unei căi: numele fișierului (sau al ultimului director).filepath.Abs: Transformă o cale relativă în cale absolută, pornind de la directorul curent.os.CreateTemp: Creează și deschide un fișier temporar nou, cu nume unic, și îl returnează ca *os.File.