SunQuest
 
       Java
  Home arrow Java arrow Page 3 - Zip Meets Java
Dev Shed Forums 
Administration  
AJAX  
Apache  
BrainDump  
DHTML  
Flash  
Java  
JavaScript  
Multimedia  
MySQL  
Oracle  
Perl  
PHP  
Practices  
Python  
Reviews  
Security  
Style-Sheets  
Web Services  
XML  
Zend  
Zope  
Forums Sitemap 
IBM® developerWorks 
Sun Developer Network 
Dedicated Servers 
E-Commerce Hosting 
Linux Web Hosting 
Managed Hosting 
Small Business Hosting 
Actuate Whitepapers 
VeriSign Whitepapers 
VPS Hosting 
Weekly Newsletter

 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
JAVA

Zip Meets Java
By: Kulvir Singh Bhogal
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 5 stars5 stars5 stars5 stars5 stars / 92
    2003-11-17

    Table of Contents:
  • Zip Meets Java
  • Zipping Things Up with Java
  • Unzipping Things with Java
  • Conclusion

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT

    Stay one step ahead of the competition. Evaluate and give feedback on some of the hottest web development tools on the market today. Make your opinion heard! Click Here

    Zip Meets Java - Unzipping Things with Java


    (Page 3 of 4 )

    So we can create zip files with Java. Can we extract them? Listing 2 shows an example Java class that can do just that. Let’s cover what’s going on in the class, as it might not be that obvious to the java.util.zip API newcomer.

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    public class ZipUncompressExample
    {

       // specify buffer size for extraction
       static final int BUFFER = 2048;

       public static void main(String[] args)
       {
         try
         {
           System.out.println("Example of ZIP file decompression.");

           // Specify file to decompress
           String inFileName = "c:\example.zip";
           // Specify destination where file will be unzipped
           String destinationDirectory = "c:\temp\";

           File sourceZipFile = new File(inFileName);
           File unzipDestinationDirectory = new File(destinationDirectory);

           // Open Zip file for reading
           ZipFile zipFile = new ZipFile(sourceZipFile, ZipFile.OPEN_READ);

           // Create an enumeration of the entries in the zip file
           Enumeration zipFileEntries = zipFile.entries();

           // Process each entry
           while (zipFileEntries.hasMoreElements())
           {
             // grab a zip file entry
             ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();

             String currentEntry = entry.getName();
             System.out.println("Extracting: " + entry);

             File destFile =
               new File(unzipDestinationDirectory, currentEntry);

             // grab file's parent directory structure
             File destinationParent = destFile.getParentFile();

             // create the parent directory structure if needed
             destinationParent.mkdirs();

             // extract file if not a directory
             if (!entry.isDirectory())
             {
               BufferedInputStream is =
                 new BufferedInputStream(zipFile.getInputStream(entry));
               int currentByte;
               // establish buffer for writing file
               byte data[] = new byte[BUFFER];

               // write the current file to disk
               FileOutputStream fos = new FileOutputStream(destFile);
               BufferedOutputStream dest =
               new BufferedOutputStream(fos, BUFFER);

               // read and write until last byte is encountered
               while ((currentByte = is.read(data, 0, BUFFER)) != -1)
               {
                 dest.write(data, 0, currentByte);
               }
               dest.flush();
               dest.close();
               is.close();
             }
           }
           zipFile.close();
         }
         catch (IOException ioe)
         {
         ioe.printStackTrace();
         }
       }
    }

    The ZipUncompressExample class unzips a file called example.zip and extracts it to a destination directory called d:temp. We first open the source zip file. From our ZipFile object, we can use the entires() method to obtain an Enumeration which contains ZipEntry objects. These individual ZipEntry objects represent the entries which make up the Zip file.

    I then use a while loop to cycle through the entries of our Zip file. As we process each ZipEntry object, we have to check and see if the zip entry in question has the needed housing directory structure in place. If the needed directories are not created, they are established. We use the getParentFile method of the File class to obtain the parent directory structure. If the current zip entry is not a directory (i.e., a file), we write the file to disk in the corresponding housing directory. This process is continued until each entry in the Zip file is processed.

    More Java Articles
    More By Kulvir Singh Bhogal


     

       

    JAVA ARTICLES

    - Adding Images With iTextSharp
    - Adding Columns With iTextSharp
    - Creating Simple PDF Files With iTextSharp
    - The Spring Framework: Understanding IoC
    - Introducing the Spring Framework
    - Java Classes
    - Completing the Syntactic Comparison of Java ...
    - Syntactic Comparison of Java and C/C++
    - Java Statements
    - Conditionals, Expressions and Other Java Ope...
    - Java Operators
    - Primitive Data Types and Basic Language Rule...
    - Java and Object-Oriented Programming
    - Java Beginning Programming
    - Gaming Development Setup





    © 2003-2008 by Developer Shed. All rights reserved. DS Cluster 5 hosted by Hostway