Android APIs
public class

ZipFile

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

Class Overview

This class provides random read access to a zip file. You pay more to read the zip file's central directory up front (from the constructor), but if you're using getEntry(String) to look up multiple files by name, you get the benefit of this index.

If you only want to iterate through all the files (using entries(), you should consider ZipInputStream, which provides stream-like read access to a zip file and has a lower up-front cost because you don't pay to build an in-memory index.

If you want to create a zip file, use ZipOutputStream. There is no API for updating an existing zip file.

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 reading.
Public Constructors
ZipFile(File file)
Constructs a new ZipFile allowing read access to the contents of the given file.
ZipFile(String name)
Constructs a new ZipFile allowing read access to the contents of the given file.
ZipFile(File file, int mode)
Constructs a new ZipFile allowing access to the given file.
Public Methods
void close()
Closes this zip file.
Enumeration<? extends ZipEntry> entries()
Returns an enumeration of the entries.
String getComment()
Returns this file's comment, or null if it doesn't have one.
ZipEntry getEntry(String entryName)
Returns the zip entry with the given name, or null if there is no such entry.
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
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Constants

public static final int CENATT

Added in API level 21

Constant Value: 36 (0x00000024)

public static final int CENATX

Added in API level 21

Constant Value: 38 (0x00000026)

public static final int CENCOM

Added in API level 21

Constant Value: 32 (0x00000020)

public static final int CENCRC

Added in API level 21

Constant Value: 16 (0x00000010)

public static final int CENDSK

Added in API level 21

Constant Value: 34 (0x00000022)

public static final int CENEXT

Added in API level 21

Constant Value: 30 (0x0000001e)

public static final int CENFLG

Added in API level 21

Constant Value: 8 (0x00000008)

public static final int CENHDR

Added in API level 21

Constant Value: 46 (0x0000002e)

public static final int CENHOW

Added in API level 21

Constant Value: 10 (0x0000000a)

public static final int CENLEN

Added in API level 21

Constant Value: 24 (0x00000018)

public static final int CENNAM

Added in API level 21

Constant Value: 28 (0x0000001c)

public static final int CENOFF

Added in API level 21

Constant Value: 42 (0x0000002a)

public static final long CENSIG

Added in API level 21

Constant Value: 33639248 (0x0000000002014b50)

public static final int CENSIZ

Added in API level 21

Constant Value: 20 (0x00000014)

public static final int CENTIM

Added in API level 21

Constant Value: 12 (0x0000000c)

public static final int CENVEM

Added in API level 21

Constant Value: 4 (0x00000004)

public static final int CENVER

Added in API level 21

Constant Value: 6 (0x00000006)

public static final int ENDCOM

Added in API level 21

Constant Value: 20 (0x00000014)

public static final int ENDHDR

Added in API level 21

Constant Value: 22 (0x00000016)

public static final int ENDOFF

Added in API level 21

Constant Value: 16 (0x00000010)

public static final long ENDSIG

Added in API level 21

Constant Value: 101010256 (0x0000000006054b50)

public static final int ENDSIZ

Added in API level 21

Constant Value: 12 (0x0000000c)

public static final int ENDSUB

Added in API level 21

Constant Value: 8 (0x00000008)

public static final int ENDTOT

Added in API level 21

Constant Value: 10 (0x0000000a)

public static final int EXTCRC

Added in API level 21

Constant Value: 4 (0x00000004)

public static final int EXTHDR

Added in API level 21

Constant Value: 16 (0x00000010)

public static final int EXTLEN

Added in API level 21

Constant Value: 12 (0x0000000c)

public static final long EXTSIG

Added in API level 21

Constant Value: 134695760 (0x0000000008074b50)

public static final int EXTSIZ

Added in API level 21

Constant Value: 8 (0x00000008)

public static final int LOCCRC

Added in API level 21

Constant Value: 14 (0x0000000e)

public static final int LOCEXT

Added in API level 21

Constant Value: 28 (0x0000001c)

public static final int LOCFLG

Added in API level 21

Constant Value: 6 (0x00000006)

public static final int LOCHDR

Added in API level 21

Constant Value: 30 (0x0000001e)

public static final int LOCHOW

Added in API level 21

Constant Value: 8 (0x00000008)

public static final int LOCLEN

Added in API level 21

Constant Value: 22 (0x00000016)

public static final int LOCNAM

Added in API level 21

Constant Value: 26 (0x0000001a)

public static final long LOCSIG

Added in API level 21

Constant Value: 67324752 (0x0000000004034b50)

public static final int LOCSIZ

Added in API level 21

Constant Value: 18 (0x00000012)

public static final int LOCTIM

Added in API level 21

Constant Value: 10 (0x0000000a)

public static final int LOCVER

Added in API level 21

Constant Value: 4 (0x00000004)

public static final int OPEN_DELETE

Added in API level 1

Delete zip file when closed.

Constant Value: 4 (0x00000004)

public static final int OPEN_READ

Added in API level 1

Open zip file for reading.

Constant Value: 1 (0x00000001)

Public Constructors

public ZipFile (File file)

Added in API level 1

Constructs a new ZipFile allowing read access to the contents of the given file.

UTF-8 is used to decode all comments and entry names in the file.

Parameters
file File
Throws
ZipException if a zip error occurs.
IOException if an IOException occurs.

public ZipFile (String name)

Added in API level 1

Constructs a new ZipFile allowing read access to the contents of the given file.

UTF-8 is used to decode all comments and entry names in the file.

Parameters
name String
Throws
IOException if an IOException occurs.

public ZipFile (File file, int mode)

Added in API level 1

Constructs a new ZipFile allowing access to the given file.

UTF-8 is used to decode all comments and entry names in the file.

The mode must be either OPEN_READ or OPEN_READ|OPEN_DELETE. If the OPEN_DELETE flag is supplied, the file will be deleted at or before the time that the ZipFile is closed (the contents will remain accessible until this ZipFile is closed); it also calls File.deleteOnExit.

Parameters
file File
mode int
Throws
IOException if an IOException occurs.

Public Methods

public void close ()

Added in API level 1

Closes this zip file. This method is idempotent. This method may cause I/O if the zip file needs to be deleted.

Throws
IOException if an IOException occurs.

public Enumeration<? extends ZipEntry> entries ()

Added in API level 1

Returns an enumeration of the entries. The entries are listed in the order in which they appear in the zip file.

If you only need to iterate over the entries in a zip file, and don't need random-access entry lookup by name, you should probably use ZipInputStream instead, to avoid paying to construct the in-memory index.

Returns
Enumeration<? extends ZipEntry>
Throws
IllegalStateException if this zip file has been closed.

public String getComment ()

Added in API level 19

Returns this file's comment, or null if it doesn't have one. See setComment(String).

Returns
String
Throws
IllegalStateException if this zip file has been closed.

public ZipEntry getEntry (String entryName)

Added in API level 1

Returns the zip entry with the given name, or null if there is no such entry.

Parameters
entryName String
Returns
ZipEntry
Throws
IllegalStateException if this zip file has been closed.

public InputStream getInputStream (ZipEntry entry)

Added in API level 1

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

Parameters
entry ZipEntry: the ZipEntry.
Returns
InputStream 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 ()

Added in API level 1

Gets the file name of this ZipFile.

Returns
String the file name of this ZipFile.

public int size ()

Added in API level 1

Returns the number of ZipEntries in this ZipFile.

Returns
int the number of entries in this file.
Throws
IllegalStateException if this zip file has been closed.

Protected Methods

protected void finalize ()

Added in 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