Zipando Pasta ou Arquivo
Publicado por Glauber Brilhante 11/01/2005
[ Hits: 15.809 ]
Este fonte comprime em um arquivo .zip uma pasta ou um arquivo específico.
/*
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
Ordenar um lista estática seqüencial de complexidade média (método da seleção)
Instalando java no ubuntu, fácil e rápido...
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Warcraft II Remastered no Linux? (5)
O programa assinador digital (5)









