Thursday, 20th October 2011
Follow WikiJava on twitter now. @Wikijava

Create a compressed (ZIP) file

From WikiJava

Jump to: navigation, search


This example shows how to generate a zip file containing several other files.

Contents

the article

The example uses the ZipOutputStream Class and ZipEntry from the java.util.zip package.

NOTE: There no way to directly add or modify an entry to a ZIP file after its creation. To do so, rename the old ZIP to a temporary filename. Expand the contents of the old ZIP, create the new ZIP, add the original contents plus the new files and delete the old ZIP when done.

Zip.java

/*
** a simple ZIP tool
**
** ex.  java Zip file.1 file.2 > file.zip
**
*/
import java.io.*;
import java.util.zip.*;
 
class Zip {
  public static void main(String args[]) throws IOException {
    byte b[] = new byte[512];
    ZipOutputStream zout = new ZipOutputStream(System.out);
    for(int i = 0; i < args.length; i ++) {
      InputStream in = new FileInputStream(args[i]);
      ZipEntry e = new ZipEntry(args[i].replace(File.separatorChar,'/'));
      zout.putNextEntry(e);
      int len=0;
      while((len=in.read(b)) != -1) {
        zout.write(b,0,len);
        }
      zout.closeEntry();
      print(e);
      }
    zout.close();
    }
 
  public static void print(ZipEntry e){
    PrintStream err = System.err;
    err.print("added " + e.getName());
    if (e.getMethod() == ZipEntry.DEFLATED) {
      long size = e.getSize();
      if (size > 0) {
        long csize = e.getCompressedSize();
        long ratio = ((size-csize)*100) / size;
        err.println(" (deflated " + ratio + "%)");
        }
      else {
        err.println(" (deflated 0%)");
        }
      }
    else {
      err.println(" (stored 0%)");
      }
    }
}

See Also

Real's Java How To

Comments from the users

To be notified via mail on the updates of this discussion you can login and click on watch at the top of the page


Comments on wikijava are disabled now, cause excessive spam.