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șteos.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.