Erro em código para unzip em arquivos

2 respostas
cardosodario

Amigos,

Baixei este código da internet para descompactar arquivos mas quando executo o mesmo com arquivos compactados pelo Brazip recebo as mensagens:

java Unzip Vendas.zip

Unhandled exception:

java.util.zip.ZipException: invalid CEN header (bad signature)

at java.util.zip.ZipFile.open(Native Method)

at java.util.zip.ZipFile.(Unknown Source)

at java.util.zip.ZipFile.(Unknown Source)

at Unzip.main(Unzip.java:31)
java Unzip  Relatorio1LL.zip

Extracting file: Relatorio1LL.txt

Unhandled exception:

java.util.zip.ZipException: invalid LOC header (bad signature)

at java.util.zip.ZipFile.read(Native Method)

at java.util.zip.ZipFile.access$1200(Unknown Source)

at java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source)

at java.util.zip.ZipFile$1.fill(Unknown Source)

at java.util.zip.InflaterInputStream.read(Unknown Source)

at java.io.FilterInputStream.read(Unknown Source)

at Unzip.copyInputStream(Unzip.java:14)

at Unzip.main(Unzip.java:47)

Os 2 arquivos zip tem apenas 1 arquivo cada um, um o arquivos Relatorio1LL.txt e o outro o arquivo Vendas.exe

Alguém sabe me dizer como resolver isto?

Dario

Ps. anexo o arquivo zipado

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


public class Unzip {

  public static final void copyInputStream(InputStream in, OutputStream out)
  throws IOException
  {
    byte[] buffer = new byte[1024];
    int len;

    while((len = in.read(buffer)) >= 0)
      out.write(buffer, 0, len);

    in.close();
    out.close();
  }

  public static final void main(String[] args) {
    Enumeration entries;
    ZipFile zipFile;

    if(args.length != 1) {
      System.err.println("Usage: Unzip zipfile");
      return;
    }

    try {
      zipFile = new ZipFile(args[0]);

      entries = zipFile.entries();

      while(entries.hasMoreElements()) {
        ZipEntry entry = (ZipEntry)entries.nextElement();

        if(entry.isDirectory()) {
          // Assume directories are stored parents first then children.
          System.err.println("Extracting directory: " + entry.getName());
          // This is not robust, just for demonstration purposes.
          (new File(entry.getName())).mkdir();
          continue;
        }

        System.err.println("Extracting file: " + entry.getName());
        copyInputStream(zipFile.getInputStream(entry),
           new BufferedOutputStream(new FileOutputStream(entry.getName())));
      }

      zipFile.close();
    } catch (IOException ioe) {
      System.err.println("Unhandled exception:");
      ioe.printStackTrace();
      return;
    }
  }

}

2 Respostas

KWill

Aparentemente as classes Java para manipulação de arquivos ZIP não devem estar gostando do arquivo zip gerado pelo brazip, achando que esses arquivos estão “corrompidos”. A melhor solução me parece ser trocar de compactador zip, para um compactador que tenha suporte melhor ao padrão zip.

Inté.

T

O Brazip é sabidamente incompatível com o padrão Zip quando gera arquivos com várias partes (ou seja, quando você quer gerar um ZIP que possa ser quebrado em vários disquetes ou CDs.)

Não sei se é incompatível no caso de arquivos .zip normais, mas já sou meio escaldado em relação ao Brazip quanto a compatibilidade com outras ferramentas que sigam o padrão ZIP.

Criado 28 de maio de 2009
Ultima resposta 28 de mai. de 2009
Respostas 2
Participantes 3