Go y Golang

Golang: Eliminar archivo o directorio con todo su contenido

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.

Eliminar archivo en Go

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.

Eliminar archivo con Go

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.

Eliminar carpeta con todo su contenido con Go

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.

Ejemplo de código completo

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

6 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

6 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

6 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

6 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

6 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

7 días hace

Esta web usa cookies.