FileDocCategorySizeDatePackage
UnZip.javaAPI DocExample2728Sat Nov 25 12:55:34 GMT 2000None

UnZip

public class UnZip extends Object
UnZip -- print or unzip a JAR or PKZIP file using JDK1.1 java.util.zip. Final command-line version: extracts files.
author
Ian Darwin, Ian@DarwinSys.com $Id: UnZip.java,v 1.4 2000/11/25 17:55:34 ian Exp $

Fields Summary
public static final int
LIST
Constants for mode listing or mode extracting.
public static final int
EXTRACT
protected int
mode
Whether we are extracting or just printing TOC
protected ZipFile
zippy
The ZipFile that is used to read an archive
protected byte[]
b
The buffer for reading/writing the ZipFile data
Constructors Summary
UnZip()
Construct an UnZip object. Just allocate the buffer

		b = new byte[8092];
	
Methods Summary
protected voidgetFile(java.util.zip.ZipEntry e)
Process one file from the zip, given its name. Either print the name, or create the file on disk.

		String zipName = e.getName();
		if (mode == EXTRACT) {
			// double-check that the file is in the zip
			// if a directory, mkdir it (remember to
			// create intervening subdirectories if needed!)
			if (zipName.endsWith("/")) {
				new File(zipName).mkdirs();
				return;
			}
			// Else must be a file; open the file for output
			System.err.println("Creating " + zipName);
			FileOutputStream os = new FileOutputStream(zipName);
			InputStream  is = zippy.getInputStream(e);
			int n = 0;
			while ((n = is.read(b)) >0)
				os.write(b, 0, n);
			is.close();
			os.close();
		} else
			// Not extracting, just list
			if (e.isDirectory()) {
				System.out.println("Directory " + zipName);
			} else {
				System.out.println("File " + zipName);
			}
	
public static voidmain(java.lang.String[] argv)
Simple main program, construct an UnZipper, process each .ZIP file from argv[] through that object.


	               	 
	     
		UnZip u = new UnZip();

		for (int i=0; i<argv.length; i++) {
			if ("-x".equals(argv[i])) {
				u.setMode(EXTRACT);
				continue;
			}
			String candidate = argv[i];
			// System.err.println("Trying path " + candidate);
			if (candidate.endsWith(".zip") ||
				candidate.endsWith(".jar"))
					u.unZip(candidate);
			else System.err.println("Not a zip file? " + candidate);
		}
		System.err.println("All done!");
	
protected voidsetMode(int m)
Set the Mode (list, extract).

		if (m == LIST ||
		    m == EXTRACT)
			mode = m;
	
public voidunZip(java.lang.String fileName)
For a given Zip file, process each entry.

		try {
			zippy = new ZipFile(fileName);
			Enumeration all = zippy.entries();
			while (all.hasMoreElements()) {
				getFile(((ZipEntry)(all.nextElement())));
			}
		} catch (IOException err) {
			System.err.println("IO Error: " + err);
			return;
		}