Arquivos Zip com Java

Galera!

Montei uma classe para zipar arquivos… até ai tudo bem, a questão é!

Caso 1: Dentro de uma pasta contem vários arquivos, quando tento zipar estes arquivos utilizando minha classe, vai tranquilo… cria o arquivo zip e os arquivos a serem zipados estao lah todos certinhos.

Caso 2: Dentro da pasta onde tem os arquivos a se zippar tem uma outra pasta com mais arquivos. PROBLEMA: A subpasta nao é adicionada no zip.

O que eu queria:

Não apenas adicionar os arquivos da subpasta ao zip (isso eu sei fazer, e já fiz) queria que a pasta aparecesse no arquivo zip e dentro dela os arquivos contidos nela.

mas nao achei formas de fazer isso, pois em todas as implementacoes q vi, era feito a leitura dos arquivos da subpasta e adicionados ao zip, onde dentro do zip eles nao estavam em uma subpasta como antes de serem zipados.

Alguem tem uma solução?

http://www.guj.com.br/posts/list/216422.java#1104385

O programa que postei gera zips com arquivos e subdiretórios. Modifique o programa para suas necessidades.

[quote=entanglement]http://www.guj.com.br/posts/list/216422.java#1104385

O programa que postei gera zips com arquivos e subdiretórios. Modifique o programa para suas necessidades.[/quote]
Eu tenho uma solução parecida também, esta aqui, que serve para comprimir e para descomprimir.

Inté.

Caras!

Achei ambas solucoes muito boas, mas no caso do entanglement o programinha apresentado foi mais produtivo pois tem o fonte. Implementei o seu código, e funcionou muito bem.

O detalhe é que, em que ponto do seu código vc faz com que os subdiretoriso aparecam dentro do zip?

isso que nao consegui abstrair dele, e como nao gosto de usar codigos sem entender oq eles fazem…

tem como vc dar uma explicada?

valew!

Uai, mas e o programa do KWill? Também tinha o fonte, e é mais completo que o meu.

De qualquer maneira, o segredo é você debugar o programa, e ver o valor de entryName para os arquivos que ficam em subdiretórios. Só isso.

                 String entryName = f.getPath();  
                 ZipEntry ze = new ZipEntry(entryName); 

[quote=gregorioarthur]Caras!

Achei ambas solucoes muito boas, mas no caso do entanglement o programinha apresentado foi mais produtivo pois tem o fonte. Implementei o seu código, e funcionou muito bem.

O detalhe é que, em que ponto do seu código vc faz com que os subdiretoriso aparecam dentro do zip?

isso que nao consegui abstrair dele, e como nao gosto de usar codigos sem entender oq eles fazem…

tem como vc dar uma explicada?

valew![/quote]
Para criar diretórios e subdiretórios em arquivos zip, bastaria usar o caractere ‘/’ no caminho do ZipEntry para indicar que algum arquivo está dentro de um subdiretório.
Por exemplo, tu quer botar o arquivo “mane.jar” dentro do diretório “mane”, entao basta fazer um ZipEntry usando como caminho “mane/mane.jar”.

Inté.

eaheahueahueahueaueau

dpois q eu perguntei, q eu me toquei da / … e eu tbm nao tinha visto q o do KWill tinha o fonte! eaeaheauehauhaeuuah mals! axei q era um JAR

mas então, jah implementei aqui… valeu pela ajuda galera.

falow