segunda-feira, 5 de agosto de 2013

Compactar e Descompactar WinRar

Olá, hoje na Empresa que trabalho, me deparei com o abend de um job. Tenho uma rotina que importa um arquivo txt ao banco de dados, efetua algumas alterações e exporta, para disponibilizar ao usuário. O sistema compacta em .ZIP, hoje o job falhou pois o ZIP não compacta arquivos acima de 2gb (não sei se é por causa da versão "free"). Bom vou compactar em .RAR que não tem limite (até onde sei), veja como...

Neste primeiro passo será necessário importar alguns namespaces: using Microsoft.Win32 e using System.Diagnostics.

Para este exemplo criei uma pasta no seguinte caminho: C: emp e adicionei o seguinte arquivo: FeedBack.xls

Segue código abaixo, com exemplo de Compactar o arquivo .xls

            string arquivoRar;
            RegistryKey registrando;
            object objeto;
            string caminho;
            ProcessStartInfo aplicandoInfo;
            Process processo;
            try
            {
                registrando = Registry.ClassesRoot.
OpenSubKey(@"ApplicationsWinRAR.exeShellOpenCommand");

                objeto = registrando.GetValue("");
                arquivoRar = objeto.ToString();
                registrando.Close();
                arquivoRar = arquivoRar.Substring(1, arquivoRar.Length - 7);
                caminho = " a " + " test.rar " + " " + @"C: empFeedBack.xls";
                aplicandoInfo = new ProcessStartInfo();

                aplicandoInfo.FileName = arquivoRar;
                aplicandoInfo.Arguments = caminho;
                aplicandoInfo.WindowStyle = ProcessWindowStyle.Hidden;
                aplicandoInfo.WorkingDirectory = @"C: emp";
                processo = new Process();
                processo.StartInfo = aplicandoInfo;
                processo.Start();
                Console.WriteLine("Arquivo .RAR Criado");
            }
            catch
            {
                Console.WriteLine("Erro ao Criar .RAR");
            }

Segue código abaixo, com exemplo de Descompactar o arquivo .rar

            string arquivoRar;
            RegistryKey registrando;
            object objeto;
            string caminho;
            ProcessStartInfo aplicandoInfo;
            Process processo;
            try
            {
                registrando = Registry.ClassesRoot.OpenSubKey(@"ApplicationsWinRAR.exeShellOpenCommand");
                objeto = registrando.GetValue("");
                arquivoRar = objeto.ToString();
                registrando.Close();
                arquivoRar = arquivoRar.Substring(1, arquivoRar.Length - 7);
                caminho = " X " + " test.rar " + @"C: emp";
                aplicandoInfo = new ProcessStartInfo();

                aplicandoInfo.FileName = arquivoRar;
                aplicandoInfo.Arguments = caminho;
                aplicandoInfo.WindowStyle = ProcessWindowStyle.Hidden;
                aplicandoInfo.WorkingDirectory = @"C: emp";
                processo = new Process();
                processo.StartInfo = aplicandoInfo;
                processo.Start();
                Console.WriteLine("Arquivo .RAR Criado");
            }
            catch
            {
                Console.WriteLine("Erro ao Criar .RAR");
            }


Espero que seja útil.

0 comentários:

Postar um comentário