os.File.Name în Go

Returnează numele cu care a fost deschis fișierul (calea dată la Open sau Create).

Sintaxă
func (f *File) Name() string

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.