Usuário com melhor resposta
compactar descompactar arquivos via C#

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)"
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
- Sugerido como Resposta Fabrício Tonetto Londero quarta-feira, 20 de junho de 2012 20:50
- Marcado como Resposta Harley AraujoModerator sexta-feira, 22 de junho de 2012 11:02
-
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!
- Marcado como Resposta Harley AraujoModerator sexta-feira, 22 de junho de 2012 11:02
-
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
- Editado Flavio Silva 'Sko.Lex' quarta-feira, 20 de junho de 2012 20:29
- Sugerido como Resposta Flavio Silva 'Sko.Lex' quarta-feira, 20 de junho de 2012 20:49
- Marcado como Resposta Harley AraujoModerator sexta-feira, 22 de junho de 2012 11:02
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!
- Marcado como Resposta Harley AraujoModerator sexta-feira, 22 de junho de 2012 11:02
-
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
- Editado Flavio Silva 'Sko.Lex' quarta-feira, 20 de junho de 2012 20:29
- Sugerido como Resposta Flavio Silva 'Sko.Lex' quarta-feira, 20 de junho de 2012 20:49
- Marcado como Resposta Harley AraujoModerator sexta-feira, 22 de junho de 2012 11:02
-
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
- Sugerido como Resposta Fabrício Tonetto Londero quarta-feira, 20 de junho de 2012 20:50
- Marcado como Resposta Harley AraujoModerator sexta-feira, 22 de junho de 2012 11:02