Varrer Arquivo e compactar

8 respostas
V

Pessoal, estou precisando de uma ajuda, tenho q fazer um aplicativo que varre uma pasta e sub pasta pegando pela extensão .xlg, e pegar todos arquivos com data maior do que 30 dias e compactar, alguem pode me ajudar…

8 Respostas

C

Oi Vanessa,

você já mecheu com arquivos em java antes?

Senão, aqui tem um excelente tutorial sobre arquivos em java.

V

eu gostaria de saber se consigo ler qualquer arquivo com uma determinada extensao, conforme irei lendo tbm terei q compactar esse arquivo

L

Sim, até onde eu sei vc consegue compactar todos arquivos.

Da uma olhada nesse link, ve se entende o código, acho que tem tudo que vc precisa:

aqui

V

O que eu nao entendi, no for tem lt, mas ele nao esta declarado em nenhum lugar…

for (i = 0; i < arquivos.length; i++) {
File arquivo = new File(arquivos[i]);

if (arquivo.isFile() && !(arquivo.getName()).equals(arqSaida)) {    
           System.out.println("Compactando: " + arquivos[i]);
C

&lt; = <
&amp; = &

V

nao entendi, vc pode reescrever para mim o For… e explicar como comentario

C
for &#40;i = 0; i &lt; arquivos.length; i++&#41; &#123; //Aqui tinha um &amp;lt; que é igual a &lt; em HTML

File arquivo = new File&#40;arquivos&#91;i&#93;&#41;;

if &#40;arquivo.isFile&#40;&#41; &amp;&amp; !&#40;arquivo.getName&#40;&#41;&#41;.equals&#40;arqSaida&#41;&#41; &#123; //Aqui tinha dois &amp;amp;, que representa o &amp; comercial, no caso tinha dois &amp;amp;, então ficará &amp;&amp;.

System.out.println&#40;&quot;Compactando&#58; &quot; + arquivos&#91;i&#93;&#41;;
V

Oi, fiz a seguinte alteracao no codigo mas ele nao funciona… como faco para chamar ele no voi main(String [])…

Segue abaixo o codigo …Ele compila e roda mas nao compacta nada… vc tem msn?? Por favor se vc puder me ajudar, pois faz muito tempo q nao mecho com java

import java.io.;
import java.util.zip.
;

public class Compactador {

// ------------------------------------------------ Constantes
static final int TAMANHO_BUFFER = 2048; // 2kb

// ------------------------------------------------ Métodos públicos

public void compactar (String arqSaida) {

int i, cont;

byte[] dados = new byte[TAMANHO_BUFFER];

String arquivos[];

File f = null;

BufferedInputStream origem = null;

FileInputStream streamDeEntrada = null;

FileOutputStream destino = null;

ZipOutputStream saida = null;

ZipEntry entry = null;
try {    
     destino = new FileOutputStream(arqSaida);    
     saida = new ZipOutputStream(new BufferedOutputStream(destino));   
     f = new File("."); // Todos os arquivos da pasta onde a classe está    
     arquivos = f.list();   
        
     for (i = 0; i &lt; arquivos.length; i++) {    
        File arquivo = new File(arquivos[i]);    

        if (arquivo.isFile() &amp;&amp; !(arquivo.getName()).equals(arqSaida)) {    
           System.out.println("Compactando: " + arquivos[i]);    

           streamDeEntrada = new FileInputStream(arquivo);    
           origem = new BufferedInputStream(streamDeEntrada, TAMANHO_BUFFER);    
           entry = new ZipEntry(arquivos[i]);    
           saida.putNextEntry(entry);   
              
           while((cont = origem.read(dados, 0, TAMANHO_BUFFER)) != -1) {    
              saida.write(dados, 0, cont);    
           }    

           origem.close();    
        }    
     }    

     saida.close();   
         
  } catch(Exception e) {    
     e.printStackTrace();    
  }

}//fim compactar()

public static void main(String[] args) throws IOException {
	String arquivo = "c:/teste.txt";
	System.out.println("testando");
	FileInputStream fis = new FileInputStream(arquivo);
	ZipInputStream zis = new ZipInputStream(fis);
	ZipEntry entrada = null;
	while ((entrada = zis.getNextEntry()) != null) {
		System.out.println(entrada.getName());
	}
	zis.close();
	fis.close();

}

}//Compactador.class

Criado 11 de maio de 2007
Ultima resposta 15 de mai. de 2007
Respostas 8
Participantes 3