El lenguaje de programación Go (también conocido como GoLang) ofrece una manera sencilla de eliminar un archivo o eliminar una carpeta/directorio con todo su contenido a través de os
.
En este post veremos cómo eliminar un archivo y también cómo eliminar un directorio con todo su contenido: son dos operaciones distintas pero que de alguna forma se relacionan.
Para eliminar un archivo usamos a os.Remove
, pasándole la ruta del archivo que vamos a eliminar. La función os.Remove puede devolver un error que debemos manejar.
// Únicamente un archivo:
nombreArchivo := "hola.txt" // El nombre o ruta absoluta del archivo
err := os.Remove(nombreArchivo)
if err != nil {
fmt.Printf("Error eliminando archivo: %v\n", err)
} else {
fmt.Println("Eliminado correctamente")
}
El ejemplo de arriba removerá el archivo del disco duro. Cabe mencionar que en ocasiones puede necesitarse indicar la ruta absoluta.
Ahora echemos un vistazo a la función os.RemoveAll que recibe la ruta de una carpeta o directorio y remueve todo su contenido de manera recursiva.
Es decir, esta función elimina todo lo que haya dentro de una carpeta: archivos y carpetas. Además, si dentro de las carpetas encuentra más carpetas, irá eliminando el contenido de cada una de ellas.
// O una carpeta con todo su contenido, recursivamente
nombreCarpeta := "cosas"
// Nota: error ya no es definido con := porque fue definido anteriormente
err = os.RemoveAll(nombreCarpeta)
if err != nil {
fmt.Printf("Error eliminando carpeta con contenido: %v\n", err)
} else {
fmt.Println("Eliminada correctamente")
}
Por cierto, si la carpeta no existe la función no devuelve error. Y si encuentra un error será de tipo PathError.
Para reforzar lo que vimos anteriormente veamos este código completo que demuestra la eliminación de un archivo y de una carpeta con Go:
/*
Demostrar eliminación de archivo y carpeta con Go
*/
package main
import (
"fmt" // Para imprimir en la consola
"os" // Eliminar archivos
)
func main() {
// Únicamente un archivo:
nombreArchivo := "hola.txt" // El nombre o ruta absoluta del archivo
err := os.Remove(nombreArchivo)
if err != nil {
fmt.Printf("Error eliminando archivo: %v\n", err)
} else {
fmt.Println("Eliminado correctamente")
}
// O una carpeta con todo su contenido, recursivamente
nombreCarpeta := "cosas"
// Nota: error ya no es definido con := porque fue definido anteriormente
err = os.RemoveAll(nombreCarpeta)
if err != nil {
fmt.Printf("Error eliminando carpeta con contenido: %v\n", err)
} else {
fmt.Println("Eliminada correctamente")
}
}
Si quieres probar el código recuerda instalar Go en Windows o Linux.
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…
Esta web usa cookies.