Java // error de descompresión: MALFORMADO

Me gustaría descomprimir recursivamente algún archivo .zip. Uso java.util.zip y no puedo usar otra biblioteca.

Mi código :

public static void unzip(String file) {

    try {
        File fSourceZip = new File(file);
        String zipPath = file.substring(0, file.length() - 4);
        File temp = new File(zipPath);
        temp.mkdir();
        System.out.println(zipPath + " created");


        ZipFile zipFile = new ZipFile(fSourceZip);
        Enumeration e = zipFile.entries();

        while (e.hasMoreElements()) {
            ZipEntry entry = (ZipEntry) e.nextElement();
            File destinationFilePath = new File(zipPath, entry.getName());

            destinationFilePath.getParentFile().mkdirs();

            if (entry.isDirectory()) {
                continue;
            } else {
                System.out.println("Extracting " + destinationFilePath);

                BufferedInputStream bis = new BufferedInputStream(
                        zipFile.getInputStream(entry));

                int b;
                byte buffer[] = new byte[1024];


                FileOutputStream fos = new FileOutputStream(
                        destinationFilePath);
                BufferedOutputStream bos = new BufferedOutputStream(fos,
                        1024);

                while ((b = bis.read(buffer, 0, 1024)) != -1) {
                    bos.write(buffer, 0, b);
                }

                bos.flush();
                bos.close();
                bis.close();
            }
            if (entry.getName().endsWith(".zip")) {
                // found a zip file, try to open
                unzip(destinationFilePath.getAbsolutePath());
            }
        }

    } catch (IOException ioe) {
        System.out.println("IOError :" + ioe);
    }
}

Pero tengo algún error con algún archivo:

Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED
    at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
    at java.util.zip.ZipFile.getZipEntry(ZipFile.java:567)
    at java.util.zip.ZipFile.access$900(ZipFile.java:61)
    at java.util.zip.ZipFile$ZipEntryIterator.next(ZipFile.java:525)
    at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:500)
    at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:481)
    at zip.ReadingArchive.unzip(ReadingArchive.java:36)
    at zip.ReadingArchive.unzip(ReadingArchive.java:82)
    at zip.ReadingArchive.unzip(ReadingArchive.java:82)
    at main.Main.main(Main.java:13)

Tengo este problema porque hay .odp en mi archivo. ¿Cómo puedo decir que solo usa .zip, no otros archivos? ¿Cómo puedo resolver este problema?

Gracias !

Respuesta 1

Tengo este formulario <s: form action = "register"> <s: textfield class = "formfield" name = "userBean.username" label = "User Name" /> <s: textfield class = "formfield" name = "...

He creado una función que convierte un doble en una fracción simplificada en Java: public static int gcm (int a, int b) {return b == 0? a: gcm (b, a% b); } cadena estática pública a la fracción (doble d) ...

Estoy empezando con Java, así que estoy transcribiendo algunas de mis cosas de Ruby. Tengo una función Ruby como esta, que genera algo que se parece a una dirección IPv6: def generate_ip () list = ["a", ...

He configurado y ejecuto tomcat. Luego fui a URL: http: // localhost: 8080 / manager / html ingresé "admin" como nombre de usuario y contraseña, que se había configurado antes. Entonces, después de eso, puedo ver al gerente de Tomcat, ...