java.lang.Object | ||||
↳ | java.io.InputStream | |||
↳ | java.io.FilterInputStream | |||
↳ | java.util.zip.InflaterInputStream | |||
↳ | java.util.zip.ZipInputStream |
Known Direct Subclasses |
Used to read (decompress) the data from zip files.
A zip file (or "archive") is a collection of (possibly) compressed files.
When reading from a
ZipInputStream
, you call
getNextEntry()
which returns a
ZipEntry
of metadata corresponding to the userdata that follows.
When you appear to have hit the end of this stream (which is really just the end of the current
entry's userdata), call
getNextEntry
again. When it returns null,
there are no more entries in the input file.
Although
InflaterInputStream
can only read compressed zip
entries, this class can read non-compressed entries as well.
Use
ZipFile
if you need random access to entries by name, but use this class
if you just want to iterate over all entries.
Using
ZipInputStream
is a little more complicated than
GZIPInputStream
because zip files are containers that can contain multiple files. This code pulls all the
files out of a zip file, similar to the
unzip(1)
utility.
InputStream is = ... ZipInputStream zis = new ZipInputStream(new BufferedInputStream(is)); try { ZipEntry ze; while ((ze = zis.getNextEntry()) != null) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int count; while ((count = zis.read(buffer)) != -1) { baos.write(buffer, 0, count); } String filename = ze.getName(); byte[] bytes = baos.toByteArray(); // do something with 'filename' and 'bytes'... } } finally { zis.close(); }
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 |
[Expand]
Inherited Fields
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.util.zip.InflaterInputStream
|
|||||||||||
From class
java.io.FilterInputStream
|
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Constructs a new
ZipInputStream
to read zip entries from the given input stream.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Returns 0 when when this stream has exhausted its input; and 1 otherwise.
|
||||||||||
|
Closes this
ZipInputStream
.
|
||||||||||
|
Closes the current zip entry and prepares to read the next entry.
|
||||||||||
|
Returns the next entry from this
ZipInputStream
or
null
if
no more entries are present.
|
||||||||||
|
Reads up to
byteCount
uncompressed bytes into the buffer
starting at
byteOffset
.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
creates a
ZipEntry
with the given name.
|
[Expand]
Inherited Methods
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.util.zip.InflaterInputStream
|
|||||||||||
From class
java.io.FilterInputStream
|
|||||||||||
From class
java.io.InputStream
|
|||||||||||
From class
java.lang.Object
|
|||||||||||
From interface
java.io.Closeable
|
|||||||||||
From interface
java.lang.AutoCloseable
|
Constructs a new
ZipInputStream
to read zip entries from the given input stream.
Returns 0 when when this stream has exhausted its input; and 1 otherwise. A result of 1 does not guarantee that further bytes can be returned, with or without blocking.
Although consistent with the RI, this behavior is inconsistent with
available()
, and violates the
Liskov
Substitution Principle
. This method should not be used.
IOException |
---|
Closes this
ZipInputStream
.
IOException |
if an
IOException
occurs.
|
---|
Closes the current zip entry and prepares to read the next entry.
IOException |
if an
IOException
occurs.
|
---|
Returns the next entry from this
ZipInputStream
or
null
if
no more entries are present.
IOException |
if an
IOException
occurs.
|
---|
Reads up to
byteCount
uncompressed bytes into the buffer
starting at
byteOffset
. Returns the number of bytes actually read, or -1.
IOException |
---|
creates a
ZipEntry
with the given name.
name | the name of the entry. |
---|
ZipEntry
.