Galera,
Eu to com uma classe que zipa um arquivo txt.
Ele esta zipando tudo certinho, so que… O arquivo zip, ele coloca as sub-pastas tbm.
Vou colocar minha classe aqui para voces darem uma olhada e entenderem melhor:
public class Zipando {
// tamanho de leitura maximo
static final int TAM_BUFFER = 1024;
public static String saida = "";
public static void zipa(String outFileZip, String inFileZip, 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(outFileZip);
zipar = new ZipOutputStream(new BufferedOutputStream(fileoutput));
// arquivo
if (escolheu == 1) {
f = new File(inFileZip); // 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(inFileZip);
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[]) {
zipa("c:\\temp\\arquivo.zip", "c:\\temp\\arquivo.txt", 1);
System.out.print("\nArquivo zipado com sucesso!\n\n");
}
}
Testem ai pra voces verem como o arquivo zip ta saindo…
dentro do Zip sai assim:
temp/arquivo.txt
Nao tem como, quando eu abrir o arquivo ZIP, aparecer direto o TXT, sem ele estar nas subpastas??
Abracos
Alvaro