sábado, 28 de setembro de 2013

Compactando Arquivos com C# - GZipStream

Seu sistema está gerando log´s, de forma gigantesca? que tal compactar essa informação? utilize o exemplo abaixo:


using System;
using System.IO;
using System.IO.Compression;
using System.Text;

namespace CompactadorGzipStream
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string origem = @"c: empArquivoTeste.txt";
                string destino = @"c: empArquivoTeste.gz";
                // 1.
                // Verificando Arquivo
                string aString = File.ReadAllText(origem);

                // 2.
                // Irá compactar
                CompactarArquivo(destino, aString);
            }
            catch
            {
                // Caso ocorra algum erro.
            }

        }
        public static void CompactarArquivo(string nomeArquivo, string value)
        {
            // A.
            // Cria arquivo temporario
            string temp = Path.GetTempFileName();
            File.WriteAllText(temp, value);

            // B.
            // Le o arquivo e cria no temporario
            byte[] b;
            using (FileStream f = new FileStream(temp, FileMode.Open))
            {
                b = new byte[f.Length];
                f.Read(b, 0, (int)f.Length);
            }

            // C.
            // Compactando o arquivo.
            using (FileStream f2 = new FileStream(nomeArquivo, FileMode.Create))
            using (GZipStream gz = new GZipStream(f2, CompressionMode.Compress, false))
            {
                gz.Write(b, 0, b.Length);
            }
        }
    }
}

0 comentários:

Postar um comentário