title: How should I extract compressed folders in java?
body: <p>I am using the following code to extract a zip file in Java.</p>
  
  <pre><code>import java.io.*;
  import java.util.zip.*;
  
  class  testZipFiles 
  {
      public static void main(String[] args) 
      {
  
          try
          {
              String filename = "C:\\zip\\includes.zip";
              testZipFiles list = new testZipFiles( );
              list.getZipFiles(filename);
          }
          catch (Exception e)
          {
              e.printStackTrace();
          }
      }
  
      public void getZipFiles(String filename)
      {
          try
          {
              String destinationname = "c:\\zip\\";
              byte[] buf = new byte[1024];
              ZipInputStream zipinputstream = null;
              ZipEntry zipentry;
              zipinputstream = new ZipInputStream(
              new FileInputStream(filename));
  
              zipentry = zipinputstream.getNextEntry();
              while (zipentry != null) 
              { 
                  //for each entry to be extracted
                  String entryName = zipentry.getName();
                  System.out.println("entryname "+entryName);
                  int n;
                  FileOutputStream fileoutputstream;
                  File newFile = new File(entryName);
                  String directory = newFile.getParent();
  
                  if(directory == null)
                  {
                      if(newFile.isDirectory())
                      break;
                  }
  
                  fileoutputstream = new FileOutputStream(
                     destinationname+entryName);             
  
                  while ((n = zipinputstream.read(buf, 0, 1024)) &gt; -1)
                      fileoutputstream.write(buf, 0, n);
  
                  fileoutputstream.close(); 
                  zipinputstream.closeEntry();
                  zipentry = zipinputstream.getNextEntry();
  
              }//while
  
              zipinputstream.close();
          }
          catch (Exception e)
         {
              e.printStackTrace();
         }
    }
  
  }
  </code></pre>
  
  <p>Obviously this will not extract a folder tree because of the break statement. I tried to use recursion to process a folder tree but failed. Could someone show me how to improve this code to handle a folder tree instead of a compressed single level folder.</p>