Como comprimir archivos con GZip [C#]

Que tal, ahora estoy intentando escribir mas seguido en el blog, pero para lograr esto lo estaré haciendo con post’s un tanto cortos.

Ahora vamos a ver como comprimir archivos con C#, lo haré lo mas sencillo posible, sin utilizar alguna GUI ni nada, simplemente por consola.

Crear un proyecto de consola

image

Lo nombraré FileGZipCompressor pero pues igual, llamenlo como uds. deseen

Crearemos una clase que se llame GZipHelper (si siguen mis posts, veran que me gusta hacer muchos helpers… jaja)

Clase GZipHelper.cs

En esta clase agregaremos los siguientes namespaces

image

Esta clase tendrá los métodos que comprimen y descomprimen, así que agregaremos un método que comprima para empezar:

image

En la linea 16-17 estamos verificando que el archivo realmente exista, si no existe lanzamos una excepción con una simple información “El archivo no existe”.

En la linea 19 estamos abriendo un Stream del archivo que queremos comprimir, es decir, lo estamos abriendo. en la linea 20 estamos creando un nuevo Stream que se guardará en la misma ruta que el archivo que estamos abriendo en la linea anterior, pero agregandole un “.gz”, es decir, el archivo comprimido ahí se guardará.

Creamos un arreglo de bytes que contendrá el archivo normal (sin comprimir), y este será utilizado para comprimir el archivo y escribirlo en el Stream “destinationFile”

Utilizando la clase GZipStream podemos comprimir un arreglo de bytes, y este con el método Write comprimirá los bytes y los escribira en el Stream que se le de en el constructor, es decir, en la linea 25 se inicializa una instancia de GZipStream llamada output, por parámetro se le da un FileStream y el tipo de operación que se realizará, en este caso, comprimir.

Podemos utilizar este método de la siguiente manera:

image

Y el resultado será:

image

image

El code-snippet para descomprimir es el siguiente:

image

Espero que les sea de utilidad, revisen bien el UncompressFile, no lo revisé bien, pero al parecer no descomprime archivos que sean mayores a 4096 bytes, desmientanme.

Saludos

Fuente: MSDN Cómo: Comprimir archivos

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s