java.util.zip

Class ZipFile

Implemented Interfaces:
java.util.zip.ZipConstants
Known Direct Subclasses:
JarFile

public class ZipFile
extends Object
implements java.util.zip.ZipConstants

This class represents a Zip archive. You can ask for the contained entries, or get an input stream for a file entry. The entry is automatically decompressed. This class is thread safe: You can open input streams for arbitrary entries in different threads.

Field Summary

static int
OPEN_DELETE
Mode flag to delete a zip file after reading.
static int
OPEN_READ
Mode flag to open a zip file for reading.

Fields inherited from interface java.util.zip.ZipConstants

CENATT, CENATX, CENCOM, CENCRC, CENDSK, CENEXT, CENFLG, CENHDR, CENHOW, CENLEN, CENNAM, CENOFF, CENSIG, CENSIZ, CENTIM, CENVEM, CENVER, ENDCOM, ENDHDR, ENDOFF, ENDSIG, ENDSIZ, ENDSUB, ENDTOT, EXTCRC, EXTHDR, EXTLEN, EXTSIG, EXTSIZ, LOCCRC, LOCEXT, LOCFLG, LOCHDR, LOCHOW, LOCLEN, LOCNAM, LOCSIG, LOCSIZ, LOCTIM, LOCVER

Constructor Summary

ZipFile(File file)
Opens a Zip file reading the given File.
ZipFile(File file, int mode)
Opens a Zip file reading the given File in the given mode.
ZipFile(String name)
Opens a Zip file with the given name for reading.

Method Summary

void
close()
Closes the ZipFile.
Enumeration
extends ZipEntry> entries()
Returns an enumeration of all Zip entries in this Zip file.
protected void
finalize()
Calls the close() method when this ZipFile has not yet been explicitly closed.
ZipEntry
getEntry(String name)
Searches for a zip entry in this archive with the given name.
InputStream
getInputStream(ZipEntry entry)
Creates an input stream reading the given zip entry as uncompressed data.
String
getName()
Returns the (path) name of this zip file.
int
size()
Returns the number of entries in this zip file.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

OPEN_DELETE

public static final int OPEN_DELETE
Mode flag to delete a zip file after reading.
Field Value:
4

OPEN_READ

public static final int OPEN_READ
Mode flag to open a zip file for reading.
Field Value:
1

Constructor Details

ZipFile

public ZipFile(File file)
            throws ZipException,
                   IOException
Opens a Zip file reading the given File.
Throws:
IOException - if a i/o error occured.
ZipException - if the file doesn't contain a valid zip archive.

ZipFile

public ZipFile(File file,
               int mode)
            throws ZipException,
                   IOException
Opens a Zip file reading the given File in the given mode. If the OPEN_DELETE mode is specified, the zip file will be deleted at some time moment after it is opened. It will be deleted before the zip file is closed or the Virtual Machine exits. The contents of the zip file will be accessible until it is closed.
Parameters:
mode - Must be one of OPEN_READ or OPEN_READ | OPEN_DELETE
Throws:
IOException - if a i/o error occured.
ZipException - if the file doesn't contain a valid zip archive.
Since:
JDK1.3

ZipFile

public ZipFile(String name)
            throws ZipException,
                   IOException
Opens a Zip file with the given name for reading.
Throws:
IOException - if a i/o error occured.
ZipException - if the file doesn't contain a valid zip archive.

Method Details

close

public void close()
            throws IOException
Closes the ZipFile. This also closes all input streams given by this class. After this is called, no further method should be called.
Throws:
IOException - if a i/o error occured.

extends ZipEntry> entries

public Enumerationextends ZipEntry> entries()
Returns an enumeration of all Zip entries in this Zip file.
Throws:
IllegalStateException - when the ZipFile has already been closed

finalize

protected void finalize()
            throws IOException
Calls the close() method when this ZipFile has not yet been explicitly closed.
Overrides:
finalize in interface Object

getEntry

public ZipEntry getEntry(String name)
Searches for a zip entry in this archive with the given name.
Parameters:
name - the name. May contain directory components separated by slashes ('/').
Returns:
the zip entry, or null if no entry with that name exists.
Throws:
IllegalStateException - when the ZipFile has already been closed

getInputStream

public InputStream getInputStream(ZipEntry entry)
            throws IOException
Creates an input stream reading the given zip entry as uncompressed data. Normally zip entry should be an entry returned by getEntry() or entries(). This implementation returns null if the requested entry does not exist. This decision is not obviously correct, however, it does appear to mirror Sun's implementation, and it is consistant with their javadoc. On the other hand, the old JCL book, 2nd Edition, claims that this should return a "non-null ZIP entry". We have chosen for now ignore the old book, as modern versions of Ant (an important application) depend on this behaviour. See discussion in this thread: http://gcc.gnu.org/ml/java-patches/2004-q2/msg00602.html
Parameters:
entry - the entry to create an InputStream for.
Returns:
the input stream, or null if the requested entry does not exist.
Throws:
IllegalStateException - when the ZipFile has already been closed
IOException - if a i/o error occured.

getName

public String getName()
Returns the (path) name of this zip file.

size

public int size()
Returns the number of entries in this zip file.
Throws:
IllegalStateException - when the ZipFile has already been closed

ZipFile.java -- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.