Zipando Pasta ou Arquivo

Publicado por Glauber Brilhante 11/01/2005

[ Hits: 15.482 ]

Download Zip.zip




Este fonte comprime em um arquivo .zip uma pasta ou um arquivo específico.

  



Esconder código-fonte

/*
Zipando.java
Zipa um arquivo ou pasta gerando um arquivo .zip
Data:11/01/2005
Autor: Glauber Antonio Garcia Brilhante
*/

import java.io.*;
import java.util.zip.*;
public class Zipando {

 // tamanho de leitura maximo  
 static final int TAM_BUFFER = 1024 ;
 public static String saida="";

 public static boolean TestaExistencia(String arquivo){
   File arq = new File(arquivo);
   return arq.exists();
   }//metodo testa existencia previa de arquivo
 
 public static String entrada (){
 
 boolean verifica=false;
 String  sobrescreve;

 try{
   BufferedReader leia = new BufferedReader(new InputStreamReader(System.in));
   System.out.print("Zipando.java\n");
   System.out.print("Zipando arquivos ou pastas \n");
   System.out.print("\nDigite o nome do arquivo a ser gerado: ");
   saida = leia.readLine();

   verifica = TestaExistencia(saida);

    while (verifica!=false) {

      System.out.print("\nO arquivo ["+saida+"] ja existe, deseja sobrescreve-lo ? [S/N]");
      sobrescreve = leia.readLine().toLowerCase();
      if (sobrescreve.equals("n")){
        System.out.print("Digite o um novo nome para o arquivo ["+saida+"]: ");
        saida = leia.readLine();
        verifica = TestaExistencia(saida);
      }
       else
         if (sobrescreve.equals("s")){
           System.out.print("O arquivo sera sobrescrito... \n");
           verifica=false;

         }
  }//while
   
   System.out.print("\nSelecione..compactacao de: \n");
   System.out.print("1. Arquivo\n2. Pasta\n");
   System.out.print("Opcao: ");
   return leia.readLine();

}
catch(IOException e)
{System.out.println("Erro na entrada de dados -> "+e.toString());}

return saida;
}// metodo entrada

public static void zipa(String saida, int escolheu){
 int i, cont;

try{

  File f = null;

  FileInputStream fileinput = null;
  FileOutputStream fileoutput = null;
  BufferedInputStream buffer = null;
  ZipOutputStream zipar = null;
  ZipEntry entry = null;
  byte[] dados = new byte[TAM_BUFFER];


 fileoutput = new FileOutputStream(saida);
 zipar = new ZipOutputStream(new BufferedOutputStream(fileoutput));

 // arquivo
 if (escolheu == 1){
 
 String nome;
 BufferedReader leia = new BufferedReader(new InputStreamReader(System.in));
 
 System.out.print("\nDigite o nome do arquivo a ser zipado: ");
 nome = leia.readLine();
 System.out.print("\n");
 
 f = new File(nome); // nome arquivo digitado

  if (f.isFile() && !(f.getName()).equals(fileoutput)){
  System.out.println("Compactando: " + f);

  fileinput = new FileInputStream(f);
  buffer = new BufferedInputStream(fileinput,TAM_BUFFER);
  entry = new ZipEntry(nome);
  zipar.putNextEntry(entry);

  while((cont = buffer.read(dados, 0, TAM_BUFFER)) != -1) {
   zipar.write(dados, 0, cont);
  }//while
  buffer.close();

  }// if
  
 zipar.close();


 }else
 //pasta
 if (escolheu == 2) {
  System.out.print("\n");
  String[] arquivos;
  
 f = new File("."); // todos os arquivos da pasta atual
 arquivos = f.list();

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

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

               fileinput = new FileInputStream(arquivo);
               buffer = new BufferedInputStream(fileinput,TAM_BUFFER);
               entry = new ZipEntry(arquivos[i]);
               zipar.putNextEntry(entry);

               while((cont = buffer.read(dados, 0, TAM_BUFFER)) != -1) {
                  zipar.write(dados, 0, cont);
               }
            buffer.close();
            }
         }
        zipar.close();

}// if 2

}

catch(FileNotFoundException mensagem){
System.out.println("\nArquivo nao encontrado!");
System.out.println("Caso o arquivo esteja em outro diretorio, favor digitar o caminho completo.\n\n");
}
catch(IOException e){
System.out.println("Erro na entrada de dados "+e.toString());
}
catch(Exception e){
  e.printStackTrace();
}//

}// metodo para zipar

 public static void main(String argumento[]){

 String op;
 op = entrada();

 if (op.equals("1")){
 zipa(saida,1);
 System.out.print("\nArquivo zipado com sucesso!\n\n");

 }//
 else
  if (op.equals("2")){
   zipa(saida,2);
   System.out.print("\nArquivos zipados com sucesso!\n\n");
  }//
  else
     System.out.print("\n\nOpcao Invalida! \n\n");

 }// main

}//classe

Scripts recomendados

Gerando instância completa de um objeto

Player em Java

Gerar CSV, DOC e PDF

Implementação de lista duplamente encadeada orientada a objetos

Manipulação de processos em Java


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts