title: Java // unzip error :MALFORMED
body: <p>I would like to unzip recursively some archive .zip. 
  I use java.util.zip and I can't use an other library.</p>
  
  <p>My code :</p>
  
  <pre><code>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);
      }
  }
  </code></pre>
  
  <p>But I have some error with some archive :</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>I have this problem because there is .odp in my archive. How I can say only uses .zip, not other files ?
  How I can resolve this problem ?</p>
  
  <p>Thanks !</p>