Zipando Pasta ou Arquivo

Publicado por Glauber Brilhante 11/01/2005

[ Hits: 15.518 ]

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

Gerar CSV, DOC e PDF

Classes Internas em Java

Manipulação de processos em Java

Conversor de temperatura (com gráficos)

HACK :: Microsoft SQL 2000 JDBC Driver


  

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