none
Compactar varios arquivos de uma vez

    Question

  •  

    Tenho que compactar varios arquivos de um diretório origem em um único arquivo no diretório destino. Já tentei
    utilizar a classe GZipStream, porém para cada arquivo origem ela cria um .gz, o que não me atende. Gostaria de saber
    se alguém pode me ajudar
    Tuesday, February 12, 2008 4:28 PM

Answers

  • Vagner,

     

    veja em:

    http://www.codeplex.com/DotNetZip/Release/ProjectReleases.aspx?ReleaseId=8220

     

    Faça o download do arquivo ZipLib.msi e instale no seu computador

     

    Faça a referencia ao seu projeto:

    C:\Arquivos de programas\Microsoft\.NET Zip Library & Utilities\Ionic.Utils.Zip.dll

     

    Exemplo em Windows Form:

    Code Snippet

    Imports Ionic.Utils

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

    Using zip As New Zip.ZipFile("c:\temp\meuzip.zip")

    'adicionando um arquivo

    zip.AddFile("c:\temp\1028.mst")

    zip.AddFile("c:\temp\Setup.ini")

     

    'adicionando um diretório

    zip.AddDirectory("c:\temp\temp2")

    zip.Save()

    End Using

     

    End Sub

    End Class

     

     

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

     

     

     

     

    Tuesday, February 12, 2008 5:28 PM
  • Vagner,

     

    Se vc não deseja gravar o caminho de origem do arquivo ou diretório, basta informar "" no segundo parametro dos métodos .AddFile ou .AddDirectory.

     

    Neste caso os arquivos serão gravados na "raiz" do .zip.

     

    Code Snippet

    Using zip As New Zip.ZipFile("c:\temp\meuzip.zip")

    'adicionando um arquivo

    zip.AddFile("c:\temp\1028.mst", "")

    zip.AddFile("c:\temp\Setup.ini", "")

     

    'adicionando um diretório

    zip.AddDirectory("c:\temp\temp2", "")

    zip.Save()

    zip.Dispose()

    End Using

     

     

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    Thursday, February 14, 2008 12:30 PM

All replies

  • Vagner,

     

    veja em:

    http://www.codeplex.com/DotNetZip/Release/ProjectReleases.aspx?ReleaseId=8220

     

    Faça o download do arquivo ZipLib.msi e instale no seu computador

     

    Faça a referencia ao seu projeto:

    C:\Arquivos de programas\Microsoft\.NET Zip Library & Utilities\Ionic.Utils.Zip.dll

     

    Exemplo em Windows Form:

    Code Snippet

    Imports Ionic.Utils

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

    Using zip As New Zip.ZipFile("c:\temp\meuzip.zip")

    'adicionando um arquivo

    zip.AddFile("c:\temp\1028.mst")

    zip.AddFile("c:\temp\Setup.ini")

     

    'adicionando um diretório

    zip.AddDirectory("c:\temp\temp2")

    zip.Save()

    End Using

     

    End Sub

    End Class

     

     

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

     

     

     

     

    Tuesday, February 12, 2008 5:28 PM
  •  

    Valeu meu amigo muito obrigado pela resposta
    Tuesday, February 12, 2008 7:41 PM
  • Só peço a você que marque  o meu post (o que contém o código de exemplo) como útil caso tenha resolvido o seu problema!

     

    Valeu!

     

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    Tuesday, February 12, 2008 7:44 PM
  •   Me permita lhe perguntar mais uma coisa por favor ?

     

      Eu consegui fazer o que queria, compactei os 5 arquivos que meu site gerava dentro do C:\Inetpub\wwwroot\nomeDoSite\backup o problema é que quando o arquivo .zip é descompactado ele está com todas estas pastas ao invés de estar dentro só da pasta backup.

      Eu tentei os outros métodos que pertencem a classe, só para ver se havia alguma opção diferente de gravação do arquivo zip, mas não encontrei.

       Resumindo, você tem alguma idéia de como fazer para o arquivo ser gravado apenas na pasta backup. pois está funcionando só que o cliente com certeza vai questionar o motivo de ter tanta pasta dentro de outras pastas.?

      Desde já agradeço
    Thursday, February 14, 2008 11:41 AM
  • Vagner,

     

    Se vc não deseja gravar o caminho de origem do arquivo ou diretório, basta informar "" no segundo parametro dos métodos .AddFile ou .AddDirectory.

     

    Neste caso os arquivos serão gravados na "raiz" do .zip.

     

    Code Snippet

    Using zip As New Zip.ZipFile("c:\temp\meuzip.zip")

    'adicionando um arquivo

    zip.AddFile("c:\temp\1028.mst", "")

    zip.AddFile("c:\temp\Setup.ini", "")

     

    'adicionando um diretório

    zip.AddDirectory("c:\temp\temp2", "")

    zip.Save()

    zip.Dispose()

    End Using

     

     

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    Thursday, February 14, 2008 12:30 PM
  • Valeu muito obrigado , ficou perfeito !

     

    Thursday, February 14, 2008 2:05 PM
  • Oi meu amigo, preciso de uma ajuda de novo.

    Quando eu rodo minha aplicação pelo visual studio funciona direito sem problemas, só que quando eu coloco a aplicação em produção ocorre o erro "Access to the path 'C:\WINDOWS\system32\nw1abtvb.bnj' is denied." no momento da gravação do arquivo .zip.

    Depois da pasta system32 o arquivo que sai na mensagem muda a cada vez que eu executo.

    O caminho para o arquivo que eu estou querendo compactar é "Server.MapPath("..\\..\\" + "\\Temp\\").ToString()".

     

    Você tem idéia do porque isso acontece só no servidor ?

     

     

     

     

     

    Thursday, March 06, 2008 4:24 PM
  • Fantástico Laercio, simples e direto!!!

     

    Parabéns a você, a codeplex, e aos desenvolvedores da ZipLib.
    Monday, April 28, 2008 8:36 PM
  • Alguém conseguiu solução para este problema??

     

    Estou com o mesmo problema. Local consigo gerar um arquivo .zip, porém em produção ocorre o erro "Access to the path 'C:\WINDOWS\system32\...' is denied.

     

    Att

    Monday, June 30, 2008 12:11 PM
  •  

    Vc verificou se os Arquivos ou Diretorios nao estao atribuidos como ReadOnly?
    Thursday, August 28, 2008 1:22 PM
  •  

    Olá a todos,

    estou reavivando este tópico pois tive o mesmo erro apresentado, apesar de que o diretório no servidor de hospedagem está com permissão de leitura e escrita, o erro ocorre.... já na minha maquina local não!

    Alguem tem uma solução para o problema? Ou uma explicação dos motivos pelos quais isso ocorre?

     

    Desde já agradeço pela atenção e ajuda de todos..

    Monday, September 22, 2008 8:27 PM
  • Olá Let´s Caferr

     

    Veja se o usuário ASP.NET do IIS tem direito de leitura e escrita nesta pasta!!!

     

    Espero ter ajudado!

    Tuesday, September 23, 2008 12:00 AM
  •  

    Sim, tem acesso para leitura e escrita....

     

    E ainda não consegui resolver o problema.

    Tuesday, September 23, 2008 2:56 PM
  •  

    Sunday, November 23, 2008 5:53 PM
  • Olá Laércio,

     

    no exemplo que vc passou acima, vc vai gerar um arquivo MEUZIP.ZIP contendo os arquivos 1028.MST e SETUP.INI ?

    Se for isso, como eu faria para zipar uma pasta inteira sem ter que nomear discretamente todos os arquivos.

    Obs: Inclusive subpastas com mais arquivos dentro, ou seja, um diretório completo.

     

    Obrigado

     

    Pestana

    Monday, November 24, 2008 11:36 AM
  • tais usando win vista? se for troca pro xp ou 7
    Monday, March 22, 2010 2:47 PM