Skip to Content

Extract Zip File With Subdirectories Using Command Line Argument Example

  • strict warning: Non-static method view::load() should not be called statically in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/views.module on line 906.
  • strict warning: Declaration of views_handler_argument::init() should be compatible with views_handler::init(&$view, $options) in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/handlers/views_handler_argument.inc on line 0.
  • strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/handlers/views_handler_filter.inc on line 0.
  • strict warning: Declaration of views_handler_filter::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/handlers/views_handler_filter.inc on line 0.
  • strict warning: Declaration of views_handler_filter_boolean_operator::value_validate() should be compatible with views_handler_filter::value_validate($form, &$form_state) in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/handlers/views_handler_filter_boolean_operator.inc on line 0.
  • strict warning: Declaration of views_plugin_style_default::options() should be compatible with views_object::options() in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/plugins/views_plugin_style_default.inc on line 0.
  • strict warning: Declaration of views_plugin_row::options_validate() should be compatible with views_plugin::options_validate(&$form, &$form_state) in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/plugins/views_plugin_row.inc on line 0.
  • strict warning: Declaration of views_plugin_row::options_submit() should be compatible with views_plugin::options_submit(&$form, &$form_state) in /home/javaexa1/public_html/sites/all/modules/views-6.x-2.16/views/plugins/views_plugin_row.inc on line 0.

  1. /*
  2.         Extract Zip File With Subdirectories Using Command Line Argument Example.
  3.         This Java example shows how to extract a zip file and create required
  4.         sub-directories using Java ZipInputStream class.
  5. */
  6.  
  7. import java.io.BufferedInputStream;
  8. import java.io.BufferedOutputStream;
  9. import java.io.File;
  10. import java.io.FileInputStream;
  11. import java.io.FileOutputStream;
  12. import java.io.IOException;
  13. import java.io.InputStream;
  14. import java.io.OutputStream;
  15. import java.util.Enumeration;
  16. import java.util.zip.ZipEntry;
  17. import java.util.zip.ZipFile;
  18. import java.util.zip.ZipInputStream;
  19.  
  20. public class ExtractFileSubDirectories {
  21.        
  22.         public static void main(String args[])
  23.         {
  24.        
  25.                 /*
  26.                  * This program expects one command line argument
  27.                  *
  28.                  * 1. Path of zip file
  29.                  */
  30.                  
  31.                  //fetch command line argument
  32.                  String strZipFile = args[0];
  33.                                  
  34.                  if(strZipFile == null || strZipFile.equals(""))
  35.                  {
  36.                         System.out.println("Invalid source file");
  37.                         System.exit(0);
  38.                  }
  39.                  
  40.                 //call method to unzip/extract files from zip file
  41.                 unzip(strZipFile);
  42.                
  43.                 System.out.println("Zip file extracted!");
  44.         }
  45.  
  46.         private static void unzip(String strZipFile) {
  47.                
  48.                 try
  49.                 {
  50.                         /*
  51.                          * STEP 1 : Create directory with the name of the zip file
  52.                          *
  53.                          * For e.g. if we are going to extract c:/demo.zip create c:/demo
  54.                          * directory where we can extract all the zip entries
  55.                          *
  56.                          */
  57.                         File fSourceZip = new File(strZipFile);
  58.                         String zipPath = strZipFile.substring(0, strZipFile.length()-4);
  59.                         File temp = new File(zipPath);
  60.                         temp.mkdir();
  61.                         System.out.println(zipPath + " created");
  62.                        
  63.                         /*
  64.                          * STEP 2 : Extract entries while creating required
  65.                          * sub-directories
  66.                          *
  67.                          */
  68.                         ZipFile zipFile = new ZipFile(fSourceZip);
  69.                         Enumeration e = zipFile.entries();
  70.                        
  71.                         while(e.hasMoreElements())
  72.                         {
  73.                                 ZipEntry entry = (ZipEntry)e.nextElement();
  74.                                 File destinationFilePath = new File(zipPath,entry.getName());
  75.  
  76.                                 //create directories if required.
  77.                                 destinationFilePath.getParentFile().mkdirs();
  78.                                
  79.                                 //if the entry is directory, leave it. Otherwise extract it.
  80.                                 if(entry.isDirectory())
  81.                                 {
  82.                                         continue;
  83.                                 }
  84.                                 else
  85.                                 {
  86.                                         System.out.println("Extracting " + destinationFilePath);
  87.                                        
  88.                                         /*
  89.                                          * Get the InputStream for current entry
  90.                                          * of the zip file using
  91.                                          *
  92.                                          * InputStream getInputStream(Entry entry) method.
  93.                                          */
  94.                                         BufferedInputStream bis = new BufferedInputStream(zipFile
  95.                                                                                                                         .getInputStream(entry));
  96.                                                                                                                        
  97.                                         int b;
  98.                                         byte buffer[] = new byte[1024];
  99.  
  100.                                         /*
  101.                                          * read the current entry from the zip file, extract it
  102.                                          * and write the extracted file.
  103.                                          */
  104.                                         FileOutputStream fos = new FileOutputStream(destinationFilePath);
  105.                                         BufferedOutputStream bos = new BufferedOutputStream(fos,
  106.                                                                         1024);
  107.  
  108.                                         while ((b = bis.read(buffer, 0, 1024)) != -1) {
  109.                                                         bos.write(buffer, 0, b);
  110.                                         }
  111.                                        
  112.                                         //flush the output stream and close it.
  113.                                         bos.flush();
  114.                                         bos.close();
  115.                                        
  116.                                         //close the input stream.
  117.                                         bis.close();
  118.                                 }
  119.                         }
  120.                 }
  121.                 catch(IOException ioe)
  122.                 {
  123.                         System.out.println("IOError :" + ioe);
  124.                 }
  125.                
  126.         }
  127. }
  128.  
  129. /*
  130. Sample usage of this prgram
  131.  
  132. java ExtractFileSubDirectories c:/sampleDoc.zip
  133.  
  134. Output of this program would be
  135. Zip file extracted!
  136.  
  137. This program will extract file from C:/sampleDoc.zip to
  138. c:/sampleDoc directory with all required sub-directories.
  139.  
  140. */