public class ZipFile extends Object implements Closeable
getEntry(java.lang.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.
| Modifier and Type | Class and Description |
|---|---|
static class |
ZipFile.RAFStream
Wrap a stream around a RandomAccessFile.
|
static class |
ZipFile.ZipInflaterInputStream |
| Modifier and Type | Field and Description |
|---|---|
static int |
CENATT |
static int |
CENATX |
static int |
CENCOM |
static int |
CENCRC |
static int |
CENDSK |
static int |
CENEXT |
static int |
CENFLG |
static int |
CENHDR |
static int |
CENHOW |
static int |
CENLEN |
static int |
CENNAM |
static int |
CENOFF |
static long |
CENSIG |
static int |
CENSIZ |
static int |
CENTIM |
static int |
CENVEM |
static int |
CENVER |
static int |
ENDCOM |
static int |
ENDHDR |
static int |
ENDOFF |
static long |
ENDSIG |
static int |
ENDSIZ |
static int |
ENDSUB |
static int |
ENDTOT |
static int |
EXTCRC |
static int |
EXTHDR |
static int |
EXTLEN |
static long |
EXTSIG |
static int |
EXTSIZ |
static int |
LOCCRC |
static int |
LOCEXT |
static int |
LOCFLG |
static int |
LOCHDR |
static int |
LOCHOW |
static int |
LOCLEN |
static int |
LOCNAM |
static long |
LOCSIG |
static int |
LOCSIZ |
static int |
LOCTIM |
static int |
LOCVER |
static int |
OPEN_DELETE
Delete zip file when closed.
|
static int |
OPEN_READ
Open zip file for reading.
|
| Constructor and Description |
|---|
ZipFile(File file)
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. |
ZipFile(String name)
Constructs a new
ZipFile allowing read access to the contents of the given file. |
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Closes this zip file.
|
Enumeration<? extends ZipEntry> |
entries()
Returns an enumeration of the entries.
|
protected void |
finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
|
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. |
public static final int OPEN_READ
public static final int OPEN_DELETE
public static final long LOCSIG
public static final long EXTSIG
public static final long CENSIG
public static final long ENDSIG
public static final int LOCHDR
public static final int EXTHDR
public static final int CENHDR
public static final int ENDHDR
public static final int LOCVER
public static final int LOCFLG
public static final int LOCHOW
public static final int LOCTIM
public static final int LOCCRC
public static final int LOCSIZ
public static final int LOCLEN
public static final int LOCNAM
public static final int LOCEXT
public static final int EXTCRC
public static final int EXTSIZ
public static final int EXTLEN
public static final int CENVEM
public static final int CENVER
public static final int CENFLG
public static final int CENHOW
public static final int CENTIM
public static final int CENCRC
public static final int CENSIZ
public static final int CENLEN
public static final int CENNAM
public static final int CENEXT
public static final int CENCOM
public static final int CENDSK
public static final int CENATT
public static final int CENATX
public static final int CENOFF
public static final int ENDSUB
public static final int ENDTOT
public static final int ENDSIZ
public static final int ENDOFF
public static final int ENDCOM
public ZipFile(File file) throws ZipException, IOException
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.
ZipException - if a zip error occurs.IOException - if an IOException occurs.public ZipFile(String name) throws IOException
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.
IOException - if an IOException occurs.public ZipFile(File file, int mode) throws IOException
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.
IOException - if an IOException occurs.protected void finalize()
throws IOException
ObjectNote 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.
finalize in class ObjectIOExceptionpublic void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableIOException - if an IOException occurs.public Enumeration<? extends ZipEntry> entries()
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.
IllegalStateException - if this zip file has been closed.public String getComment()
ZipOutputStream.setComment(java.lang.String).IllegalStateException - if this zip file has been closed.public ZipEntry getEntry(String entryName)
IllegalStateException - if this zip file has been closed.public InputStream getInputStream(ZipEntry entry) throws IOException
ZipEntry.entry - the ZipEntry.ZipEntry.IOException - if an IOException occurs.IllegalStateException - if this zip file has been closed.public String getName()
ZipFile.ZipFile.public int size()
ZipEntries in this ZipFile.IllegalStateException - if this zip file has been closed.