Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

Los archivos agrupan varios archivos en un solo formato, normalmente zip, tar o rar. Los archivos de almacenamiento también pueden usar compresión para reducir el tamaño total del archivo.

Puede usar archivos para distribuir software y datos, incluidas páginas web. También puede archivar su aplicación, con todos sus archivos y dependencias, para que los usuarios la descarguen e instalen.

El paquete de archivos de Go le permite crear y extraer archivos en formatos tar y zip.

Paquete de archivo de Go

ir proporciona archivo paquetes para trabajar con varios formatos de archivo. Puedes usar el cremallera y alquitrán paquetes para crear, leer y escribir archivos de almacenamiento en esos formatos. Ambos paquetes admiten varios algoritmos de compresión a través de una API fácil de usar.

Así es como puede importar los paquetes zip y tar en sus archivos Go:

instagram viewer
importar (
"archivo/zip"
"archivo/alquitrán"
)

Después de importar los paquetes, puede usarlos para crear y manipular archivos de almacenamiento.

Creación y adición de archivos a archivos Tar

El alquitrán el paquete funciona con tar archivos de formatos tar y tar.gz, incluyendo soporte para leer y escribir archivos con encabezados extendidos PAX.

El paquete tar proporciona una Nuevo escritor función para crear nuevos archivos tar. NewWriter toma en un yo. Escritor instancia de interfaz que puede ser un archivo o un búfer de memoria y devuelve un puntero a la alquitrán. Escritor estructura

paquete principal

importar (
"archivo/alquitrán"
"os"
)

funciónprincipal() {
// Crea un nuevo archivo
archivo, _ := os. Crear("miarchivo.tar")
aplazar archivo. Cerca()

// Crear un nuevo archivo tar
tarWriter := tar. Nuevo escritor (archivo)
aplazar tarWriter. Cerca()
}

El Crear función de la sistema operativo El paquete crea un nuevo archivo tar. El alquitrán. Nuevo escritor La función toma un archivo y crea un nuevo archivo.

Puede agregar archivos al archivo tar con el WriteHeader y Escribir funciones La función WriteHeader toma un alquitrán. Encabezamiento estructura como un argumento. Contiene los metadatos del archivo, como el nombre del archivo, el tamaño y los bits de permiso. La función Escribir escribe el contenido de un archivo en el archivo.

importar (
"archivo/alquitrán"
"fmt"
"yo"
"registro"
"os"
)

funciónprincipal() {
// Crea un nuevo archivo
archivo, _ := os. Crear("miarchivo.tar")
archivo, _ = os. Crear("mensaje.txt")
aplazar archivo. Cerca()

// Crear un nuevo archivo tar
tarWriter := tar. Nuevo escritor (archivo)
aplazar tarWriter. Cerca()

// Agregar un archivo al archivo
fileToAdd, _ := os. Abierto("archivo1.txt")
aplazar archivo para agregar. Cerca()
fileInfo, _ := fileToAdd. Estadística ()
cabecera, _ := alquitrán. FileInfoHeader (fileInfo, "")
tarWriter. WriteHeader (encabezado)
_, _ = yo. Copiar (tarWriter, fileToAdd)
fmt. imprimir("Operación de archivo TAR completada")
}

El programa crea nuevos archivos tar y de texto con el Crear función de la sistema operativo paquete y un nuevo archivo tar con el Nuevo escritor, antes de agregar el archivo al archivo.

El Abierto La función abre el archivo para agregarlo al archivo. Tenga en cuenta que necesitará un archivo llamado archivo1.txt en su directorio de trabajo para ejecutar este programa con éxito.

Puedes usar el Estadística función de una instancia de archivo para obtener los metadatos que necesitará para el encabezado tar. Pasar su resultado a FileInfoHeader, luego pase ese resultado al WriteHeader función para configurar el archivo tar. Finalmente, copie el archivo al archivo usando yo. Copiar.

Extracción de archivos de archivos Tar

Puedes usar el Nuevo Lector función para leer el contenido del archivo tar. La función NewReader toma un yo. Lector interfaz que puede ser un archivo o un búfer de memoria. Devuelve un puntero a un alquitrán. Lector estructura

importar (
"archivo/alquitrán"
"yo"
"os"
)

funciónprincipal() {
// Abre el archivo tar
archivo, _ := os. Abierto("miarchivo.tar")
aplazar archivo. Cerca()

// Crear un nuevo lector tar
tarReader := tar. NewReader (archivo)

// Iterar sobre los archivos en el archivo
para {
encabezado, error := tarReader. Próximo()

si err == io. EOF {
romper
}

// Extraer el archivo
archivo de salida, _ := os. Crear (encabezado. Nombre)
aplazar archivo de salida. Cerca()
_, _ = yo. Copiar (outFile, tarReader)
}
}

El bucle for infinito atraviesa la instancia del lector tar y extrae los archivos copiando cada archivo con el yo paquete Copiar función.

Creación y adición de archivos a archivos comprimidos

Puede crear un nuevo archivo zip con el Nuevo escritor función de la cremallera paquete. La función NewWriter toma una instancia de archivo y devuelve un escritor zip.

importar (
"archivo/zip"
"os"
)

funciónprincipal() {
// Crea un nuevo archivo
archivo, error: = os. Crear("archivo.zip")

si error! = nulo {
pánico(errar)
}

aplazar archivo. Cerca()

// Crear un nuevo escritor zip
zipWriter := zip. Nuevo escritor (archivo)
aplazar zipWriter. Cerca()
}

El zipWriter variable almacena una nueva Escritor instancia que devuelve NewWriter.

Puede agregar archivos a sus archivos zip con el Crear función de la instancia de Writer. La función Crear toma el nombre del archivo. También puede utilizar el Escribir función de la instancia de archivo zip para escribir datos en archivos en archivos zip.

importar (
"archivo/zip"
"os"
)

funciónprincipal() {
// Crear nuevos archivos
archivo, error: = os. Crear("archivo.zip")
archivo, err = os. Crear("archivo1.txt")
archivo, err = os. Crear("archivo2.txt")

si error! = nulo {
pánico(errar)
}

aplazar archivo. Cerca()

// Crear un nuevo escritor zip
zipWriter := zip. Nuevo escritor (archivo)
aplazar zipWriter. Cerca()

// Agregar archivos al archivo
archivo1, error := zipWriter. Crear("archivo1.txt")

si error! = nulo {
pánico(errar)
}

archivo2, error := zipWriter. Crear("archivo2.txt")

si error! = nulo {
pánico(errar)
}

// Escribir datos en los archivos del archivo
archivo1.Escribir([]byte("¡Hola Mundo!"))
archivo2.Escribir([]byte("¡Adiós mundo!"))
fmt. imprimir("operación de archivo zip completada")
}

La función principal comienza usando Crear para crear un nuevo archivo zip y dos archivos de texto. Luego crea dos Escritores para agregar los dos archivos de texto al archivo. El Escribir función de cada instancia de archivo escribe mensajes en cada uno de los archivos del archivo.

Extracción de archivos de archivos comprimidos

Puede extraer un archivo zip existente leyéndolo con el lector abierto función, luego recorrer su contenido y copiar archivos con el yo paquete.

importar (
"archivo/zip"
"fmt"
"yo"
"os"
)

funciónprincipal() {
// Abrimos el archivo
zipReader, error: = zip. lector abierto("archivo.zip")

si error! = nulo {
pánico(errar)
}

aplazar zipReader. Cerca()

// Extraer archivos del archivo
para _, archivo := rango zipReader. Archivo {
archivo comprimido, err := archivo. Abierto()

si error! = nulo {
pánico(errar)
}

aplazar archivo comprimido. Cerca()

// Crear un nuevo archivo con el mismo nombre que el archivo comprimido
archivo extraído, err := os. Crea un archivo. Nombre)

si error! = nulo {
pánico(errar)
}

aplazar archivo extraído. Cerca()

// Copiar los datos del archivo comprimido al nuevo archivo
_, err = io. Copiar (archivo extraído, archivo comprimido)

si error! = nulo {
pánico(errar)
}

fmt. imprimirf("Extraído %s\n", archivo. Nombre)
}
}

El lector abierto función lee archivos zip. El lector abierto La función acepta el nombre del archivo zip como argumento y devuelve una instancia de lector de archivos zip. El para rango el bucle recorre el contenido de los archivos en la instancia del lector. Crea un nuevo archivo con el mismo nombre que el archivo original y copia el contenido del archivo extraído al nuevo archivo usando el yo. Copiar función.

Descomprima manualmente o programáticamente: usted decide

Descomprimir archivos mediante programación es conveniente si tiene muchos archivos para descomprimir. También podría estar integrando la funcionalidad de archivo en su aplicación principal.

En otros casos, es mejor que utilice las aplicaciones existentes. Puede usar aplicaciones integradas o de terceros para descomprimir archivos en Windows, macOS y Linux.