os.Remove în Go

Șterge un fișier sau un director gol.

Sintaxă
func Remove(name string) error

Ce face os.Remove

os.Remove șterge definitiv un fișier (nu îl mută în coșul de gunoi). Poate șterge și un director, dar numai dacă este gol. Pentru un director cu conținut folosește os.RemoveAll.

Dacă fișierul nu există, primești o eroare care satisface errors.Is(err, fs.ErrNotExist). Mulți programatori ignoră exact acest caz, pentru că rezultatul dorit (fișierul nu mai există) este atins.

Parametri

Parametru Descriere
name Calea fișierului sau a directorului gol.

Ce returnează

nil la succes sau eroarea.

Exemple

Exemplul 1: Ștergerea unui fișier

package main

import (
    "fmt"
    "os"
)

func main() {
    os.WriteFile("vechi.log", []byte("mesaj vechi\n"), 0o644)
    fmt.Println("Remove:", os.Remove("vechi.log"))

    _, err := os.Stat("vechi.log")
    fmt.Println("mai există?", !os.IsNotExist(err))
}

Rezultat

Remove: <nil>
mai există? false

Exemplul 2: Director cu conținut

package main

import (
    "fmt"
    "os"
)

func main() {
    os.MkdirAll("arhiva", 0o755)
    os.WriteFile("arhiva/2024.zip", []byte("..."), 0o644)

    fmt.Println("Remove:", os.Remove("arhiva"))
    fmt.Println("RemoveAll:", os.RemoveAll("arhiva"))
}

Rezultat

Remove: remove arhiva: directory not empty
RemoveAll: <nil>

Exemplul 3: Ștergere fără eroare dacă fișierul lipsește

package main

import (
    "errors"
    "fmt"
    "io/fs"
    "os"
)

func stergeDacaExista(nume string) error {
    err := os.Remove(nume)
    if errors.Is(err, fs.ErrNotExist) {
        return nil
    }
    return err
}

func main() {
    fmt.Println("Remove direct:", os.Remove("cache.tmp"))
    fmt.Println("stergeDacaExista:", stergeDacaExista("cache.tmp"))
}

Rezultat

Remove direct: remove cache.tmp: no such file or directory
stergeDacaExista: <nil>

Greșeli frecvente

  • Ștergi un fișier încă deschis pe Windows: ștergerea eșuează. Închide fișierul (f.Close()) înainte.
  • Încerci să ștergi un director plin cu Remove și primești „directory not empty”. Folosește os.RemoveAll, cu grijă.

Comenzi înrudite

  • os.RemoveAll: Șterge un fișier sau un director cu tot conținutul lui; nu dă eroare dacă nu există.
  • os.Rename: Redenumește sau mută un fișier ori un director.
  • os.IsNotExist: IsNotExist spune dacă o eroare înseamnă „fișierul nu există”; IsExist, dacă înseamnă „există deja”.
  • os.Mkdir: Creează un singur director nou; dă eroare dacă există deja sau dacă directorul părinte lipsește.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: os.Remove

Ai o nelămurire despre utilizarea comenzii os.Remove sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.