public class

ZipFile

extends Object
java.lang.Object
   ↳ java.util.zip.ZipFile
Known Direct Subclasses

Class Overview

This class provides random read access to a ZIP-archive file.

While ZipInputStream provides stream based read access to a ZIP-archive, this class implements more efficient (file based) access and makes use of the central directory within a ZIP-archive.

Use ZipOutputStream if you want to create an archive.

A temporary ZIP file can be marked for automatic deletion upon closing it.

Summary

Constants
int CENATT
int CENATX
int CENCOM
int CENCRC
int CENDSK
int CENEXT
int CENFLG
int CENHDR
int CENHOW
int CENLEN
int CENNAM
int CENOFF
long CENSIG
int CENSIZ
int CENTIM
int CENVEM
int CENVER
int ENDCOM
int ENDHDR
int ENDOFF
long ENDSIG
int ENDSIZ
int ENDSUB
int ENDTOT
int EXTCRC
int EXTHDR
int EXTLEN
long EXTSIG
int EXTSIZ
int LOCCRC
int LOCEXT
int LOCFLG
int LOCHDR
int LOCHOW
int LOCLEN
int LOCNAM
long LOCSIG
int LOCSIZ
int LOCTIM
int LOCVER
int OPEN_DELETE Delete ZIP file when closed.
int OPEN_READ Open ZIP file for read.
Public Constructors
ZipFile(File file)
Constructs a new ZipFile with the specified file.
ZipFile(File file, int mode)
Opens a file as ZIP-archive.
ZipFile(String name)
Opens a ZIP archived file.
Public Methods
void close()
Closes this ZIP file.
Enumeration<? extends ZipEntry> entries()
Returns an enumeration of the entries.
ZipEntry getEntry(String entryName)
Gets the ZIP entry with the specified name from this ZipFile.
InputStream getInputStream(ZipEntry entry)
Returns an input stream on the data of the specified ZipEntry.
String getName()
Gets the file name of this ZipFile.
int size()
Returns the number of ZipEntries in this ZipFile.
Protected Methods
void finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final int CENATT

Constant Value: 36 (0x00000024)

public static final int CENATX

Constant Value: 38 (0x00000026)

public static final int CENCOM

Constant Value: 32 (0x00000020)

public static final int CENCRC

Constant Value: 16 (0x00000010)

public static final int CENDSK

Constant Value: 34 (0x00000022)

public static final int CENEXT

Constant Value: 30 (0x0000001e)

public static final int CENFLG

Constant Value: 8 (0x00000008)

public static final int CENHDR

Constant Value: 46 (0x0000002e)

public static final int CENHOW

Constant Value: 10 (0x0000000a)

public static final int CENLEN

Constant Value: 24 (0x00000018)

public static final int CENNAM

Constant Value: 28 (0x0000001c)

public static final int CENOFF

Constant Value: 42 (0x0000002a)

public static final long CENSIG

Constant Value: 33639248 (0x0000000002014b50)

public static final int CENSIZ

Constant Value: 20 (0x00000014)

public static final int CENTIM

Constant Value: 12 (0x0000000c)

public static final int CENVEM

Constant Value: 4 (0x00000004)

public static final int CENVER

Constant Value: 6 (0x00000006)

public static final int ENDCOM

Constant Value: 20 (0x00000014)

public static final int ENDHDR

Constant Value: 22 (0x00000016)

public static final int ENDOFF

Constant Value: 16 (0x00000010)

public static final long ENDSIG

Constant Value: 101010256 (0x0000000006054b50)

public static final int ENDSIZ

Constant Value: 12 (0x0000000c)

public static final int ENDSUB

Constant Value: 8 (0x00000008)

public static final int ENDTOT

Constant Value: 10 (0x0000000a)

public static final int EXTCRC

Constant Value: 4 (0x00000004)

public static final int EXTHDR

Constant Value: 16 (0x00000010)

public static final int EXTLEN

Constant Value: 12 (0x0000000c)

public static final long EXTSIG

Constant Value: 134695760 (0x0000000008074b50)

public static final int EXTSIZ

Constant Value: 8 (0x00000008)

public static final int LOCCRC

Constant Value: 14 (0x0000000e)

public static final int LOCEXT

Constant Value: 28 (0x0000001c)

public static final int LOCFLG

Constant Value: 6 (0x00000006)

public static final int LOCHDR

Constant Value: 30 (0x0000001e)

public static final int LOCHOW

Constant Value: 8 (0x00000008)

public static final int LOCLEN

Constant Value: 22 (0x00000016)

public static final int LOCNAM

Constant Value: 26 (0x0000001a)

public static final long LOCSIG

Constant Value: 67324752 (0x0000000004034b50)

public static final int LOCSIZ

Constant Value: 18 (0x00000012)

public static final int LOCTIM

Constant Value: 10 (0x0000000a)

public static final int LOCVER

Constant Value: 4 (0x00000004)

public static final int OPEN_DELETE

Since: API Level 1

Delete ZIP file when closed.

Constant Value: 4 (0x00000004)

public static final int OPEN_READ

Since: API Level 1

Open ZIP file for read.

Constant Value: 1 (0x00000001)

Public Constructors

public ZipFile (File file)

Since: API Level 1

Constructs a new ZipFile with the specified file.

Parameters
file the file to read from.
Throws
ZipException if a ZIP error occurs.
IOException if an IOException occurs.

public ZipFile (File file, int mode)

Since: API Level 1

Opens a file as ZIP-archive. "mode" must be OPEN_READ or OPEN_DELETE . The latter sets the "delete on exit" flag through a file.

Parameters
file the ZIP file to read.
mode the mode of the file open operation.
Throws
IOException if an IOException occurs.

public ZipFile (String name)

Since: API Level 1

Opens a ZIP archived file.

Parameters
name the name of the ZIP file.
Throws
IOException if an IOException occurs.

Public Methods

public void close ()

Since: API Level 1

Closes this ZIP file. This method is idempotent.

Throws
IOException if an IOException occurs.

public Enumeration<? extends ZipEntry> entries ()

Since: API Level 1

Returns an enumeration of the entries. The entries are listed in the order in which they appear in the ZIP archive.

Returns
  • the enumeration of the entries.
Throws
IllegalStateException if this ZIP file has been closed.

public ZipEntry getEntry (String entryName)

Since: API Level 1

Gets the ZIP entry with the specified name from this ZipFile.

Parameters
entryName the name of the entry in the ZIP file.
Returns
  • a ZipEntry or null if the entry name does not exist in the ZIP file.
Throws
IllegalStateException if this ZIP file has been closed.

public InputStream getInputStream (ZipEntry entry)

Since: API Level 1

Returns an input stream on the data of the specified ZipEntry.

Parameters
entry the ZipEntry.
Returns
  • an input stream of the data contained in the ZipEntry.
Throws
IOException if an IOException occurs.
IllegalStateException if this ZIP file has been closed.

public String getName ()

Since: API Level 1

Gets the file name of this ZipFile.

Returns
  • the file name of this ZipFile.

public int size ()

Since: API Level 1

Returns the number of ZipEntries in this ZipFile.

Returns
  • the number of entries in this file.
Throws
IllegalStateException if this ZIP file has been closed.

Protected Methods

protected void finalize ()

Since: API Level 1

Invoked when the garbage collector has detected that this instance is no longer reachable. The default implementation does nothing, but this method can be overridden to free resources.

Note that objects that override finalize are significantly more expensive than objects that don't. Finalizers may be run a long time after the object is no longer reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup. Note also that finalizers are run on a single VM-wide finalizer thread, so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary for a class that has a native peer and needs to call a native method to destroy that peer. Even then, it's better to provide an explicit close method (and implement Closeable), and insist that callers manually dispose of instances. This works well for something like files, but less well for something like a BigInteger where typical calling code would have to deal with lots of temporaries. Unfortunately, code that creates lots of temporaries is the worst kind of code from the point of view of the single finalizer thread.

If you must use finalizers, consider at least providing your own ReferenceQueue and having your own thread process that queue.

Unlike constructors, finalizers are not automatically chained. You are responsible for calling super.finalize() yourself.

Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See Effective Java Item 7, "Avoid finalizers" for more.

Throws
IOException