¿Cómo copiar archivos en Go?
Si bien muchas operaciones con archivos son posibles mediante la librería ioutil. Sin embargo cuando es necesario utilizar operaciones mas complejas, podemos echar mano de la librería os.
El proceso para copiar un archivo es:
- Abrir el archivo a copiar.
- Leer el contenido.
- Crear el archivo en donde se va a copiar.
- Escribir el contenido del nuevo archivo.
- Cerrar ambos archivos.
Ejemplo para copiar un archivo en Go
package main
import (
"fmt"
"io"
"log"
"os"
)
func main() {
// leer datos de origen
origen, err := os.Open("origen.txt")
if err != nil {
log.Fatal(err)
}
// cierra el archivo "origen.txt" al terminar el programa
defer origen.Close()
// crea un nuevo archivo
destino, err := os.OpenFile("destino.txt", os.O_RDWR|os.O_CREATE, 0666)
if err != nil {
log.Fatal(err)
}
// cierra el archivo "destino.txt" al terminar programa
defer destino.Close()
// copiar datos
resultadoCopia, err := io.Copy(destino, origen)
if err != nil {
log.Fatal(err)
}
}
Descripción del ejemplo para copiar archivos en Go
- Primero vamos a leer el contenido del archivo.
origen, err := os.Open("origen.txt")
- Crear un nuevo archivo destino.txt con propiedades de escritura.
destino, err := os.OpenFile("destino.txt", os.O_RDWR|os.O_CREATE, 0666)
- Copar el contenido del archivo origen.txt a destino.txt.
resultadoCopia, err := io.Copy(destino, origen)
Al ejecutar el programa podremos darnos cuenta que el contenido del archivo origen se copia al archivo destino.