Los algoritmos Gzip y Zlib se usan popularmente para comprimir y descomprimir archivos. Gzip se usa principalmente para comprimir archivos individuales, mientras que Zlib comprime principalmente flujos de datos. Los algoritmos usan el Algoritmo de compresión desinflado para la compresión, aunque Gzip ofrece funciones adicionales, como la comprobación de errores y metadatos de archivos.
Gzip ha proporcionado mejores relaciones de compresión que Zlib. Sin embargo, Gzip requiere más poder de procesamiento para comprimir y descomprimir datos. En la mayoría de los casos, debe usar Gzip para comprimir archivos y Zlib para comprimir flujos de datos.
Go proporciona la funcionalidad para comprimir datos, incluidos archivos a través de la comprimir paquete.
El paquete de compresión
El comprimir El paquete admite la compresión de datos a través del comprimir/gzip y comprimir/zlib paquetes, entre otras funcionalidades.
El gzip El paquete admite la compresión y descompresión de los datos en formato de archivo gzip, incluidas las operaciones de lectura y escritura como se especifica en RFC 1952. Mientras que la zlib El paquete ayuda a comprimir y descomprimir datos en formato zlib.
Puedes importar gzip y zlib desde el comprimir paquete usando el importar palabra clave.
importar (
"comprimir/gzip"// importar gzip
"comprimir/zlib"// importar zlib
)
Comprimir y descomprimir archivos con Gzip
Gzip es un formato de archivo y una aplicación de software para la compresión y descompresión de archivos. Gzip usa el algoritmo de cadena Lempel-Ziv-Markov (LZ77) para comprimir datos, y el algoritmo se usa a menudo para comprimir archivos de texto, como archivos HTML, CSS o JavaScript.
El proceso de comprimir archivos con el gzip El paquete es simple e intuitivo. Deberá abrir el archivo, crear un archivo comprimido con gzip, crear un editor con gzip y copiar el original contenido del archivo al escritor gzip antes de la operación de vaciado que asegura que el proceso de escritura sea completo.
Ejecuta esto comando bash en la terminal de su directorio de trabajo en sistemas Unix para crear un archivo de texto de muestra y luego insertar texto en el archivo.
// crea un archivo de texto.
toque ejemplo.txt
// canaliza la cadena al archivo
echo '¡Hola, mundo!' > ejemplo.txt}
Después de crear el archivo e insertar el texto, puede importar el gzip, yo, y sistema operativo paquetes para la operación de compresión.
Así es como puede usar el comprimir/gzip paquete para comprimir un archivo de texto.
importar (
"comprimir/gzip"
"yo"
"os"
)funciónprincipal() {
// Abrimos el archivo original
archivo original, error: = os. Abierto("ejemplo.txt")
si error! = nulo {
pánico(errar)
}
aplazar archivo original. Cerca()// Crear un nuevo archivo comprimido con gzip
gzippedFile, error: = os. Crear("ejemplo.txt.gz")
si error! = nulo {
pánico(errar)
}
aplazar archivo comprimido con gzip. Cerca()// Crear un nuevo escritor gzip
gzipWriter := gzip. NewWriter (archivo comprimido con gzip)
aplazar gzipWriter. Cerca()// Copiar el contenido del archivo original al escritor gzip
_, err = io. Copiar (gzipWriter, archivo original)
si error! = nulo {
pánico(errar)
}
// Vacíe el escritor gzip para asegurarse de que se escriben todos los datos
gzipWriter. Enjuagar()
}
El Abierto función de la sistema operativo El paquete abre el archivo de texto y el Cerca La función cierra el archivo con un aplazar declaración. El Crear La función crea un archivo comprimido con gzip, y el Nuevo escritor función de la gzip El paquete escribe el contenido del archivo de texto en el archivo gzip usando el Copiar función de la yo paquete.
El Enjuagar metodo de la gzipWriter instancia vacía el escritor gzip una vez que todos los datos están disponibles en el archivo comprimido.
Puede recuperar el archivo original de un archivo comprimido con gzip a través de un proceso de descompresión. El proceso de descompresión de un archivo es similar; abrirá el archivo y creará un lector de archivos gzip, luego creará un nuevo archivo para almacenar los datos sin comprimir antes de copiar el contenido en el nuevo archivo.
importar (
"comprimir/gzip"
"yo"
"os"
)funciónprincipal() {
// Abre el archivo comprimido con gzip
gzippedFile, error: = os. Abierto("ejemplo.txt.gz")
si error! = nulo {
pánico(errar)
}
aplazar archivo comprimido con gzip. Cerca()// Crear un nuevo lector gzip
gzipReader, error := gzip. NewReader (archivo comprimido con gzip)
aplazar gzipReader. Cerca()// Crea un nuevo archivo para contener los datos sin comprimir
archivo descomprimido, err := os. Crear("ejemplo.txt")
si error! = nulo {
pánico(errar)
}
aplazar archivo sin comprimir. Cerca()
// Copiar el contenido del lector gzip al nuevo archivo
_, err = io. Copiar (archivo sin comprimir, gzipReader)
si error! = nulo {
pánico(errar)
}
}
El Abierto función de la sistema operativo El paquete abre el archivo comprimido con gzip y el Nuevo Lector función de la gzip paquete lee el archivo comprimido. El Crear función de la sistema operativo El paquete crea un nuevo archivo de texto. El Copiar función copia el contenido de la gzipReader hacia archivo sin comprimir.
Comprimir y descomprimir datos con Zlib
Zlib es una biblioteca para compresión y descompresión de datos; la biblioteca también utiliza el algoritmo LZ77. Zlib está escrito en C y se usa ampliamente como base para otras bibliotecas y software de compresión. A diferencia de gzip, zlib es una biblioteca y zlib no incluye un formato de archivo. Sin embargo, a menudo se usa para comprimir datos almacenados en formatos de contenedor, como PNG o HTTP.
El proceso de compresión con zlib es el mismo que para gzip. Creará un archivo zlib, configurará un editor, abrirá el archivo original y copiará el contenido en el archivo comprimido.
importar (
"comprimir/zlib"
"yo"
"os"
)funciónprincipal() {
// Crear un nuevo archivo "ejemplo.zlib"
archivo, error: = os. Crear("ejemplo.zlib")
// Si ocurre un error, entrar en pánico y detener el programa
si error! = nulo {
pánico(errar)
}
// Asegurarse de que el archivo esté cerrado después de que la función regrese
aplazar archivo. Cerca()// Crear un nuevo escritor zlib con el mejor nivel de compresión
escritor, error: = zlib. NewWriterLevel (archivo, zlib. mejorcompresión)
// Si ocurre un error, entrar en pánico y detener el programa
si error! = nulo {
pánico(errar)
}
// Asegurarse de que el escritor esté cerrado después de que la función regrese
aplazar escritor. Cerca()// Abre el archivo de entrada "ejemplo.txt"
archivo de entrada, error: = os. Abierto("ejemplo.txt")
// Si ocurre un error, entrar en pánico y detener el programa
si error! = nulo {
pánico(errar)
}
// Asegurarse de que el archivo de entrada se cierre después de que la función regrese
aplazar fichero de entrada. Cerca()
// Copiar el contenido del archivo de entrada al escritor
yo. Copiar (escritor, archivo de entrada)
}
El Crear El método crea el archivo zlib y el Nuevo nivel de escritor La función crea un escritor para el archivo con la opción especificada (en este caso, el mejorcompresión opción). El Abierto metodo de la sistema operativo El paquete abre el archivo de texto y el Copiar función de la yo El paquete copia el contenido del archivo de texto en el archivo zlib en el proceso de compresión.
Para descomprimir el archivo zlib, deberá abrir el archivo comprimido, crear un nuevo lector zlib y, finalmente, copiar el contenido del lector a la salida estándar.
importar (
"comprimir/zlib"
"yo"
"os"
)funciónprincipal() {
// Abre el archivo comprimido "compressed_file.zlib"
archivo, error: = os. Abierto("archivo_comprimido.zlib")
// Si ocurre un error, entrar en pánico y detener el programa
si error! = nulo {
pánico(errar)
}
// Asegurarse de que el archivo esté cerrado después de que la función regrese
aplazar archivo. Cerca()// Crear un nuevo lector zlib para el archivo comprimido
lector, error: = zlib. NewReader (archivo)
// Si ocurre un error, entrar en pánico y detener el programa
si error! = nulo {
pánico(errar)
}
// Asegurarse de que el lector esté cerrado después de que la función regrese
aplazar lector. Cerca()
// Copiar el contenido del lector a la salida estándar
yo. Copiar (os. Stdout, lector)
}
La función principal abre el archivo zlib con el sistema operativo paquete Abierto función, y la Nuevo Lector función de la zlib El paquete lee el archivo zlib en una instancia de lector. El Copiar metodo de la yo El paquete copia el contenido del lector a la salida estándar (en este caso, la consola).
Escribir código para la compresión de archivos es útil para automatizar tareas y comprimir varios archivos. Si solo necesitas comprimir algunos archivos, puedes recurrir al uso de aplicaciones como WinRar, WinZip, Express Zip y Bandizip.