none
compactar descompactar arquivos via C# RRS feed

  • Pergunta

  • Preciso de uma maneira de compactar e descompactar arquivos via C# com a versão 3.5 do .net framework.

    Tentei o exemplo abaixo:

    http://msdn.microsoft.com/en-us/library/ms404280(v=vs.90).aspx

    mas apresentou o seguinte erro: "The magic number in GZip header is not correct. Make sure you are passing in a GZip stream."

    Estou passando um arquivo ".ZIP" para minha função decompress. O erro ocorre na linha : "while ((numRead = Decompress.Read(buffer, 0, buffer.Length)) != 0)"

    quarta-feira, 20 de junho de 2012 13:33

Respostas

  • Opa

    eu usei o DotNetZipLib(http://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFYQFjAA&url=http%3A%2F%2Fdotnetzip.codeplex.com%2F&ei=KzbiT-mMNMe16AGTsM0H&usg=AFQjCNF7PUCpTBRV2n15jmp3MGFzEHxxTw&sig2=s1OepCgM9APg3Dv2jROFzw)

    Segue o que eu fiz:

    public void CompactaDiretorio()
            {
                try
                {
                    using (ZipFile zip = new ZipFile())
                    {
                        zip.AddDirectory(@"C:\importacao-migracao");
                        zip.Save(@"C:\importacao-migracao.zip");
                    }
                }
                catch (Exception ex)
                {
                    
                }
            }

    Ele compacta todo um diretorio, ou seja, todos os arquivos, subpastas... para um arquivo .zip.

    Espero ter ajudado, abraço

    quarta-feira, 20 de junho de 2012 20:45
  • http://stackoverflow.com/questions/2601982/error-the-magic-number-in-gzip-header-is-not-correct

    O Amor que Sinto por Ti, Apenas Deus e capaz de sentir e superar tal amor!

    quarta-feira, 20 de junho de 2012 17:44
    Moderador
  • Aqui, usei uma biblioteca que achei, fica bem facil.

    Using Ionic.Zip
    
    
            private void escolherArquivos_Click(object sender, EventArgs e)
            {
                OpenFileDialog Open = new OpenFileDialog();
                Open.Multiselect = true;
    
                Open.ShowDialog();
    
                listBox1.Items.AddRange(Open.FileNames);
            }
    
            private void compactar_Click(object sender, EventArgs e)
            {
                Ionic.Zip.ZipFile zFile = new ZipFile();            
                zFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
                zFile.Comment = "comentario";           
    
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    zFile.AddFile(listBox1.Items[i].ToString(),"qualquer");
                }
    
                SaveFileDialog save = new SaveFileDialog();
                save.Filter = "Tipo Winrar|.rar";
                save.ShowDialog();
    
                zFile.Save(save.FileName);
                zFile.Password = "123";
            }
    
            private void descompactar_Click(object sender, EventArgs e)
            {
                OpenFileDialog open = new OpenFileDialog();
                open.Filter = "Tipo Winrar|.rar|Tipo Zip|.zip";
                open.ShowDialog();
    
                Ionic.Zip.ZipFile zFile = new ZipFile();
                zFile = ZipFile.Read(open.FileName);            
                zFile.ExtractAll(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ada");      
            }

    Você encontra o download dela aqui:
    http://dotnetzip.codeplex.com/

    Flávio Silva (Sko.Lex)
    http://www.youtube.com/user/MrSkoLex


    Se a resposta foi útil para você, marque-a como tal.
    Obrigado




    quarta-feira, 20 de junho de 2012 20:28

Todas as Respostas

  • http://stackoverflow.com/questions/2601982/error-the-magic-number-in-gzip-header-is-not-correct

    O Amor que Sinto por Ti, Apenas Deus e capaz de sentir e superar tal amor!

    quarta-feira, 20 de junho de 2012 17:44
    Moderador
  • Aqui, usei uma biblioteca que achei, fica bem facil.

    Using Ionic.Zip
    
    
            private void escolherArquivos_Click(object sender, EventArgs e)
            {
                OpenFileDialog Open = new OpenFileDialog();
                Open.Multiselect = true;
    
                Open.ShowDialog();
    
                listBox1.Items.AddRange(Open.FileNames);
            }
    
            private void compactar_Click(object sender, EventArgs e)
            {
                Ionic.Zip.ZipFile zFile = new ZipFile();            
                zFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
                zFile.Comment = "comentario";           
    
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    zFile.AddFile(listBox1.Items[i].ToString(),"qualquer");
                }
    
                SaveFileDialog save = new SaveFileDialog();
                save.Filter = "Tipo Winrar|.rar";
                save.ShowDialog();
    
                zFile.Save(save.FileName);
                zFile.Password = "123";
            }
    
            private void descompactar_Click(object sender, EventArgs e)
            {
                OpenFileDialog open = new OpenFileDialog();
                open.Filter = "Tipo Winrar|.rar|Tipo Zip|.zip";
                open.ShowDialog();
    
                Ionic.Zip.ZipFile zFile = new ZipFile();
                zFile = ZipFile.Read(open.FileName);            
                zFile.ExtractAll(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ada");      
            }

    Você encontra o download dela aqui:
    http://dotnetzip.codeplex.com/

    Flávio Silva (Sko.Lex)
    http://www.youtube.com/user/MrSkoLex


    Se a resposta foi útil para você, marque-a como tal.
    Obrigado




    quarta-feira, 20 de junho de 2012 20:28
  • Opa

    eu usei o DotNetZipLib(http://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFYQFjAA&url=http%3A%2F%2Fdotnetzip.codeplex.com%2F&ei=KzbiT-mMNMe16AGTsM0H&usg=AFQjCNF7PUCpTBRV2n15jmp3MGFzEHxxTw&sig2=s1OepCgM9APg3Dv2jROFzw)

    Segue o que eu fiz:

    public void CompactaDiretorio()
            {
                try
                {
                    using (ZipFile zip = new ZipFile())
                    {
                        zip.AddDirectory(@"C:\importacao-migracao");
                        zip.Save(@"C:\importacao-migracao.zip");
                    }
                }
                catch (Exception ex)
                {
                    
                }
            }

    Ele compacta todo um diretorio, ou seja, todos os arquivos, subpastas... para um arquivo .zip.

    Espero ter ajudado, abraço

    quarta-feira, 20 de junho de 2012 20:45