Manejo de Archivos, Copiar un archivo

¿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:

  1. Abrir el archivo a copiar.
  2. Leer el contenido.
  3. Crear el archivo en donde se va a copiar.
  4. Escribir el contenido del nuevo archivo.
  5. 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

  1. Primero vamos a leer el contenido del archivo.
origen, err := os.Open("origen.txt")
  1. Crear un nuevo archivo destino.txt con propiedades de escritura.
destino, err := os.OpenFile("destino.txt", os.O_RDWR|os.O_CREATE, 0666)
  1. 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.