# ZipInputStream

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Constants](https://developer.android.com/reference/java/util/zip/ZipInputStream#constants)\|[Inherited Fields](https://developer.android.com/reference/java/util/zip/ZipInputStream#inhfields)\|[Ctors](https://developer.android.com/reference/java/util/zip/ZipInputStream#pubctors)\|[Methods](https://developer.android.com/reference/java/util/zip/ZipInputStream#pubmethods)\|[Protected Methods](https://developer.android.com/reference/java/util/zip/ZipInputStream#promethods)\|[Inherited Methods](https://developer.android.com/reference/java/util/zip/ZipInputStream#inhmethods)  

# ZipInputStream

`
public


class
ZipInputStream
`  
`


``


``


``

extends `[InflaterInputStream](https://developer.android.com/reference/java/util/zip/InflaterInputStream)`


``


`

|---|---|---|---|------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||||
| ↳ | [java.io.InputStream](https://developer.android.com/reference/java/io/InputStream) ||||
|   | ↳ | [java.io.FilterInputStream](https://developer.android.com/reference/java/io/FilterInputStream) |||
|   |   | ↳ | [java.util.zip.InflaterInputStream](https://developer.android.com/reference/java/util/zip/InflaterInputStream) ||
|   |   |   | ↳ | java.util.zip.ZipInputStream |

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known direct subclasses [JarInputStream](https://developer.android.com/reference/java/util/jar/JarInputStream) |----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| | [JarInputStream](https://developer.android.com/reference/java/util/jar/JarInputStream) | The`JarInputStream`class is used to read the contents of a JAR file from any input stream. | |

<br />

*** ** * ** ***

This class implements an input stream filter for reading files in the ZIP file format. Includes support for both compressed and uncompressed entries.

## Summary

|                                                                                   ### Constants                                                                                   ||
|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `int`  | [CENATT](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENATT) Central directory (CEN) header internal file attributes field offset.               |
| `int`  | [CENATX](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENATX) Central directory (CEN) header external file attributes field offset.               |
| `int`  | [CENCOM](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENCOM) Central directory (CEN) header comment length field offset.                         |
| `int`  | [CENCRC](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENCRC) Central directory (CEN) header uncompressed file crc-32 value field offset.         |
| `int`  | [CENDSK](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENDSK) Central directory (CEN) header disk number start field offset.                      |
| `int`  | [CENEXT](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENEXT) Central directory (CEN) header extra field length field offset.                     |
| `int`  | [CENFLG](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENFLG) Central directory (CEN) header encrypt, decrypt flags field offset.                 |
| `int`  | [CENHDR](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENHDR) Central directory (CEN) header size in bytes (including signature).                 |
| `int`  | [CENHOW](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENHOW) Central directory (CEN) header compression method field offset.                     |
| `int`  | [CENLEN](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENLEN) Central directory (CEN) header uncompressed size field offset.                      |
| `int`  | [CENNAM](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENNAM) Central directory (CEN) header filename length field offset.                        |
| `int`  | [CENOFF](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENOFF) Central directory (CEN) header LOC header offset field offset.                      |
| `long` | [CENSIG](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENSIG) Central directory (CEN) header signature.                                           |
| `int`  | [CENSIZ](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENSIZ) Central directory (CEN) header compressed size field offset.                        |
| `int`  | [CENTIM](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENTIM) Central directory (CEN) header modification time field offset.                      |
| `int`  | [CENVEM](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENVEM) Central directory (CEN) header version made by field offset.                        |
| `int`  | [CENVER](https://developer.android.com/reference/java/util/zip/ZipInputStream#CENVER) Central directory (CEN) header version needed to extract field offset.              |
| `int`  | [ENDCOM](https://developer.android.com/reference/java/util/zip/ZipInputStream#ENDCOM) End of central directory (END) header zip file comment length field offset.         |
| `int`  | [ENDHDR](https://developer.android.com/reference/java/util/zip/ZipInputStream#ENDHDR) End of central directory (END) header size in bytes (including signature).          |
| `int`  | [ENDOFF](https://developer.android.com/reference/java/util/zip/ZipInputStream#ENDOFF) End of central directory (END) header offset for the first CEN header field offset. |
| `long` | [ENDSIG](https://developer.android.com/reference/java/util/zip/ZipInputStream#ENDSIG) End of central directory (END) header signature.                                    |
| `int`  | [ENDSIZ](https://developer.android.com/reference/java/util/zip/ZipInputStream#ENDSIZ) End of central directory (END) header central directory size in bytes field offset. |
| `int`  | [ENDSUB](https://developer.android.com/reference/java/util/zip/ZipInputStream#ENDSUB) End of central directory (END) header number of entries on this disk field offset.  |
| `int`  | [ENDTOT](https://developer.android.com/reference/java/util/zip/ZipInputStream#ENDTOT) End of central directory (END) header total number of entries field offset.         |
| `int`  | [EXTCRC](https://developer.android.com/reference/java/util/zip/ZipInputStream#EXTCRC) Extra local (EXT) header uncompressed file crc-32 value field offset.               |
| `int`  | [EXTHDR](https://developer.android.com/reference/java/util/zip/ZipInputStream#EXTHDR) Extra local (EXT) header size in bytes (including signature).                       |
| `int`  | [EXTLEN](https://developer.android.com/reference/java/util/zip/ZipInputStream#EXTLEN) Extra local (EXT) header uncompressed size field offset.                            |
| `long` | [EXTSIG](https://developer.android.com/reference/java/util/zip/ZipInputStream#EXTSIG) Extra local (EXT) header signature.                                                 |
| `int`  | [EXTSIZ](https://developer.android.com/reference/java/util/zip/ZipInputStream#EXTSIZ) Extra local (EXT) header compressed size field offset.                              |
| `int`  | [LOCCRC](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCCRC) Local file (LOC) header uncompressed file crc-32 value field offset.                |
| `int`  | [LOCEXT](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCEXT) Local file (LOC) header extra field length field offset.                            |
| `int`  | [LOCFLG](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCFLG) Local file (LOC) header general purpose bit flag field offset.                      |
| `int`  | [LOCHDR](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCHDR) Local file (LOC) header size in bytes (including signature).                        |
| `int`  | [LOCHOW](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCHOW) Local file (LOC) header compression method field offset.                            |
| `int`  | [LOCLEN](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCLEN) Local file (LOC) header uncompressed size field offset.                             |
| `int`  | [LOCNAM](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCNAM) Local file (LOC) header filename length field offset.                               |
| `long` | [LOCSIG](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCSIG) Local file (LOC) header signature.                                                  |
| `int`  | [LOCSIZ](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCSIZ) Local file (LOC) header compressed size field offset.                               |
| `int`  | [LOCTIM](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCTIM) Local file (LOC) header modification time field offset.                             |
| `int`  | [LOCVER](https://developer.android.com/reference/java/util/zip/ZipInputStream#LOCVER) Local file (LOC) header version needed to extract field offset.                     |

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ### Inherited fields                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| From class[java.util.zip.InflaterInputStream](https://developer.android.com/reference/java/util/zip/InflaterInputStream) |-----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` protected byte[]`                                                                     | [buf](https://developer.android.com/reference/java/util/zip/InflaterInputStream#buf) Input buffer for decompression.                                                                                                                                                                                                                             | | ` protected boolean`                                                                    | [closed](https://developer.android.com/reference/java/util/zip/InflaterInputStream#closed) *This field was deprecated in API level 29. This field will be removed from a future version of Android and should not be used. Subclasses that access this field need to be modified to keep track of their own closed state by overriding close().* | | ` protected `[Inflater](https://developer.android.com/reference/java/util/zip/Inflater) | [inf](https://developer.android.com/reference/java/util/zip/InflaterInputStream#inf) Decompressor for this stream.                                                                                                                                                                                                                               | | ` protected int`                                                                        | [len](https://developer.android.com/reference/java/util/zip/InflaterInputStream#len) Length of input buffer.                                                                                                                                                                                                                                     | |
| From class[java.io.FilterInputStream](https://developer.android.com/reference/java/io/FilterInputStream) |-----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------| | ` protected `[InputStream](https://developer.android.com/reference/java/io/InputStream) | [in](https://developer.android.com/reference/java/io/FilterInputStream#in) The input stream to be filtered. |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

|                                                                                                                                                                         ### Public constructors                                                                                                                                                                         ||
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[ZipInputStream](https://developer.android.com/reference/java/util/zip/ZipInputStream#ZipInputStream(java.io.InputStream))`(`[InputStream](https://developer.android.com/reference/java/io/InputStream)` in) ` Creates a new ZIP input stream.                                                                                                                    |
| ` `[ZipInputStream](https://developer.android.com/reference/java/util/zip/ZipInputStream#ZipInputStream(java.io.InputStream,%20java.nio.charset.Charset))`(`[InputStream](https://developer.android.com/reference/java/io/InputStream)` in, `[Charset](https://developer.android.com/reference/java/nio/charset/Charset)` charset) ` Creates a new ZIP input stream. |

|                                                                                                                                  ### Public methods                                                                                                                                   ||
|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` int`                                                                        | ` `[available](https://developer.android.com/reference/java/util/zip/ZipInputStream#available())`() ` Returns 0 after EOF has reached for the current entry data, otherwise always return 1.           |
| ` void`                                                                       | ` `[close](https://developer.android.com/reference/java/util/zip/ZipInputStream#close())`() ` Closes this input stream and releases any system resources associated with the stream.                   |
| ` void`                                                                       | ` `[closeEntry](https://developer.android.com/reference/java/util/zip/ZipInputStream#closeEntry())`() ` Closes the current ZIP entry and positions the stream for reading the next entry.              |
| ` `[ZipEntry](https://developer.android.com/reference/java/util/zip/ZipEntry) | ` `[getNextEntry](https://developer.android.com/reference/java/util/zip/ZipInputStream#getNextEntry())`() ` Reads the next ZIP file entry and positions the stream at the beginning of the entry data. |
| ` int`                                                                        | ` `[read](https://developer.android.com/reference/java/util/zip/ZipInputStream#read(byte[],%20int,%20int))`(byte[] b, int off, int len) ` Reads from the current ZIP entry into an array of bytes.     |
| ` long`                                                                       | ` `[skip](https://developer.android.com/reference/java/util/zip/ZipInputStream#skip(long))`(long n) ` Skips specified number of bytes in the current ZIP entry.                                        |

|                                                                                                                                                                ### Protected methods                                                                                                                                                                ||
|-------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` `[ZipEntry](https://developer.android.com/reference/java/util/zip/ZipEntry) | ` `[createZipEntry](https://developer.android.com/reference/java/util/zip/ZipInputStream#createZipEntry(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` name) ` Creates a new`ZipEntry`object for the specified entry name. |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.util.zip.InflaterInputStream](https://developer.android.com/reference/java/util/zip/InflaterInputStream)` ` |------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` int`     | ` `[available](https://developer.android.com/reference/java/util/zip/InflaterInputStream#available())`() ` Returns 0 after EOF has been reached, otherwise always return 1.                                  | | ` void`    | ` `[close](https://developer.android.com/reference/java/util/zip/InflaterInputStream#close())`() ` Closes this input stream and releases any system resources associated with the stream.                    | | ` void`    | ` `[fill](https://developer.android.com/reference/java/util/zip/InflaterInputStream#fill())`() ` Fills input buffer with more data to decompress.                                                            | | ` void`    | ` `[mark](https://developer.android.com/reference/java/util/zip/InflaterInputStream#mark(int))`(int readlimit) ` Marks the current position in this input stream.                                            | | ` boolean` | ` `[markSupported](https://developer.android.com/reference/java/util/zip/InflaterInputStream#markSupported())`() ` Tests if this input stream supports the`mark`and`reset`methods.                           | | ` int`     | ` `[read](https://developer.android.com/reference/java/util/zip/InflaterInputStream#read())`() ` Reads a byte of uncompressed data.                                                                          | | ` int`     | ` `[read](https://developer.android.com/reference/java/util/zip/InflaterInputStream#read(byte[],%20int,%20int))`(byte[] b, int off, int len) ` Reads uncompressed data into an array of bytes.               | | ` void`    | ` `[reset](https://developer.android.com/reference/java/util/zip/InflaterInputStream#reset())`() ` Repositions this stream to the position at the time the`mark`method was last called on this input stream. | | ` long`    | ` `[skip](https://developer.android.com/reference/java/util/zip/InflaterInputStream#skip(long))`(long n) ` Skips specified number of bytes of uncompressed data.                                             | ||
| From class` `[java.io.FilterInputStream](https://developer.android.com/reference/java/io/FilterInputStream)` ` |------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` int`     | ` `[available](https://developer.android.com/reference/java/io/FilterInputStream#available())`() ` Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream. | | ` void`    | ` `[close](https://developer.android.com/reference/java/io/FilterInputStream#close())`() ` Closes this input stream and releases any system resources associated with the stream.                                                                                              | | ` void`    | ` `[mark](https://developer.android.com/reference/java/io/FilterInputStream#mark(int))`(int readlimit) ` Marks the current position in this input stream.                                                                                                                      | | ` boolean` | ` `[markSupported](https://developer.android.com/reference/java/io/FilterInputStream#markSupported())`() ` Tests if this input stream supports the`mark`and`reset`methods.                                                                                                     | | ` int`     | ` `[read](https://developer.android.com/reference/java/io/FilterInputStream#read())`() ` Reads the next byte of data from this input stream.                                                                                                                                   | | ` int`     | ` `[read](https://developer.android.com/reference/java/io/FilterInputStream#read(byte[],%20int,%20int))`(byte[] b, int off, int len) ` Reads up to`len`bytes of data from this input stream into an array of bytes.                                                            | | ` int`     | ` `[read](https://developer.android.com/reference/java/io/FilterInputStream#read(byte[]))`(byte[] b) ` Reads up to`b.length`bytes of data from this input stream into an array of bytes.                                                                                       | | ` void`    | ` `[reset](https://developer.android.com/reference/java/io/FilterInputStream#reset())`() ` Repositions this stream to the position at the time the`mark`method was last called on this input stream.                                                                           | | ` long`    | ` `[skip](https://developer.android.com/reference/java/io/FilterInputStream#skip(long))`(long n) ` Skips over and discards`n`bytes of data from the input stream.                                                                                                              | ||
| From class` `[java.io.InputStream](https://developer.android.com/reference/java/io/InputStream)` ` |--------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` int`                                                                               | ` `[available](https://developer.android.com/reference/java/io/InputStream#available())`() ` Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking, which may be 0, or 0 when end of stream is detected.                                                     | | ` void`                                                                              | ` `[close](https://developer.android.com/reference/java/io/InputStream#close())`() ` Closes this input stream and releases any system resources associated with the stream.                                                                                                                                                  | | ` void`                                                                              | ` `[mark](https://developer.android.com/reference/java/io/InputStream#mark(int))`(int readlimit) ` Marks the current position in this input stream.                                                                                                                                                                          | | ` boolean`                                                                           | ` `[markSupported](https://developer.android.com/reference/java/io/InputStream#markSupported())`() ` Tests if this input stream supports the`mark`and`reset`methods.                                                                                                                                                         | | ` static `[InputStream](https://developer.android.com/reference/java/io/InputStream) | ` `[nullInputStream](https://developer.android.com/reference/java/io/InputStream#nullInputStream())`() ` Returns a new`InputStream`that reads no bytes.                                                                                                                                                                      | | ` int`                                                                               | ` `[read](https://developer.android.com/reference/java/io/InputStream#read(byte[]))`(byte[] b) ` Reads some number of bytes from the input stream and stores them into the buffer array`b`.                                                                                                                                  | | ` abstract int`                                                                      | ` `[read](https://developer.android.com/reference/java/io/InputStream#read())`() ` Reads the next byte of data from the input stream.                                                                                                                                                                                        | | ` int`                                                                               | ` `[read](https://developer.android.com/reference/java/io/InputStream#read(byte[],%20int,%20int))`(byte[] b, int off, int len) ` Reads up to`len`bytes of data from the input stream into an array of bytes.                                                                                                                 | | ` byte[]`                                                                            | ` `[readAllBytes](https://developer.android.com/reference/java/io/InputStream#readAllBytes())`() ` Reads all remaining bytes from the input stream.                                                                                                                                                                          | | ` int`                                                                               | ` `[readNBytes](https://developer.android.com/reference/java/io/InputStream#readNBytes(byte[],%20int,%20int))`(byte[] b, int off, int len) ` Reads the requested number of bytes from the input stream into the given byte array.                                                                                            | | ` byte[]`                                                                            | ` `[readNBytes](https://developer.android.com/reference/java/io/InputStream#readNBytes(int))`(int len) ` Reads up to a specified number of bytes from the input stream.                                                                                                                                                      | | ` void`                                                                              | ` `[reset](https://developer.android.com/reference/java/io/InputStream#reset())`() ` Repositions this stream to the position at the time the`mark`method was last called on this input stream.                                                                                                                               | | ` long`                                                                              | ` `[skip](https://developer.android.com/reference/java/io/InputStream#skip(long))`(long n) ` Skips over and discards`n`bytes of data from this input stream.                                                                                                                                                                 | | ` void`                                                                              | ` `[skipNBytes](https://developer.android.com/reference/java/io/InputStream#skipNBytes(long))`(long n) ` Skips over and discards exactly`n`bytes of data from this input stream.                                                                                                                                             | | ` long`                                                                              | ` `[transferTo](https://developer.android.com/reference/java/io/InputStream#transferTo(java.io.OutputStream))`(`[OutputStream](https://developer.android.com/reference/java/io/OutputStream)` out) ` Reads all bytes from this input stream and writes the bytes to the given output stream in the order that they are read. | ||
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||
| From interface` `[java.io.Closeable](https://developer.android.com/reference/java/io/Closeable)` ` |------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/io/Closeable#close())`() ` Closes this stream and releases any system resources associated with it. | ||
| From interface` `[java.lang.AutoCloseable](https://developer.android.com/reference/java/lang/AutoCloseable)` ` |------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/lang/AutoCloseable#close())`() ` Closes this resource, relinquishing any underlying resources. | ||

## Constants

### CENATT

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENATT
```

Central directory (CEN) header internal file attributes field offset.

<br />

Constant Value: 36 (0x00000024)  

### CENATX

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENATX
```

Central directory (CEN) header external file attributes field offset.

<br />

Constant Value: 38 (0x00000026)  

### CENCOM

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENCOM
```

Central directory (CEN) header comment length field offset.

<br />

Constant Value: 32 (0x00000020)  

### CENCRC

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENCRC
```

Central directory (CEN) header uncompressed file crc-32 value field offset.

<br />

Constant Value: 16 (0x00000010)  

### CENDSK

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENDSK
```

Central directory (CEN) header disk number start field offset.

<br />

Constant Value: 34 (0x00000022)  

### CENEXT

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENEXT
```

Central directory (CEN) header extra field length field offset.

<br />

Constant Value: 30 (0x0000001e)  

### CENFLG

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENFLG
```

Central directory (CEN) header encrypt, decrypt flags field offset.

<br />

Constant Value: 8 (0x00000008)  

### CENHDR

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENHDR
```

Central directory (CEN) header size in bytes (including signature).

<br />

Constant Value: 46 (0x0000002e)  

### CENHOW

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENHOW
```

Central directory (CEN) header compression method field offset.

<br />

Constant Value: 10 (0x0000000a)  

### CENLEN

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENLEN
```

Central directory (CEN) header uncompressed size field offset.

<br />

Constant Value: 24 (0x00000018)  

### CENNAM

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENNAM
```

Central directory (CEN) header filename length field offset.

<br />

Constant Value: 28 (0x0000001c)  

### CENOFF

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENOFF
```

Central directory (CEN) header LOC header offset field offset.

<br />

Constant Value: 42 (0x0000002a)  

### CENSIG

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final long CENSIG
```

Central directory (CEN) header signature.

<br />

Constant Value: 33639248 (0x0000000002014b50)  

### CENSIZ

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENSIZ
```

Central directory (CEN) header compressed size field offset.

<br />

Constant Value: 20 (0x00000014)  

### CENTIM

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENTIM
```

Central directory (CEN) header modification time field offset.

<br />

Constant Value: 12 (0x0000000c)  

### CENVEM

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENVEM
```

Central directory (CEN) header version made by field offset.

<br />

Constant Value: 4 (0x00000004)  

### CENVER

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int CENVER
```

Central directory (CEN) header version needed to extract field offset.

<br />

Constant Value: 6 (0x00000006)  

### ENDCOM

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int ENDCOM
```

End of central directory (END) header zip file comment length field offset.

<br />

Constant Value: 20 (0x00000014)  

### ENDHDR

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int ENDHDR
```

End of central directory (END) header size in bytes (including signature).

<br />

Constant Value: 22 (0x00000016)  

### ENDOFF

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int ENDOFF
```

End of central directory (END) header offset for the first CEN header field offset.

<br />

Constant Value: 16 (0x00000010)  

### ENDSIG

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final long ENDSIG
```

End of central directory (END) header signature.

<br />

Constant Value: 101010256 (0x0000000006054b50)  

### ENDSIZ

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int ENDSIZ
```

End of central directory (END) header central directory size in bytes field offset.

<br />

Constant Value: 12 (0x0000000c)  

### ENDSUB

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int ENDSUB
```

End of central directory (END) header number of entries on this disk field offset.

<br />

Constant Value: 8 (0x00000008)  

### ENDTOT

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int ENDTOT
```

End of central directory (END) header total number of entries field offset.

<br />

Constant Value: 10 (0x0000000a)  

### EXTCRC

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int EXTCRC
```

Extra local (EXT) header uncompressed file crc-32 value field offset.

<br />

Constant Value: 4 (0x00000004)  

### EXTHDR

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int EXTHDR
```

Extra local (EXT) header size in bytes (including signature).

<br />

Constant Value: 16 (0x00000010)  

### EXTLEN

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int EXTLEN
```

Extra local (EXT) header uncompressed size field offset.

<br />

Constant Value: 12 (0x0000000c)  

### EXTSIG

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final long EXTSIG
```

Extra local (EXT) header signature.

<br />

Constant Value: 134695760 (0x0000000008074b50)  

### EXTSIZ

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int EXTSIZ
```

Extra local (EXT) header compressed size field offset.

<br />

Constant Value: 8 (0x00000008)  

### LOCCRC

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCCRC
```

Local file (LOC) header uncompressed file crc-32 value field offset.

<br />

Constant Value: 14 (0x0000000e)  

### LOCEXT

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCEXT
```

Local file (LOC) header extra field length field offset.

<br />

Constant Value: 28 (0x0000001c)  

### LOCFLG

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCFLG
```

Local file (LOC) header general purpose bit flag field offset.

<br />

Constant Value: 6 (0x00000006)  

### LOCHDR

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCHDR
```

Local file (LOC) header size in bytes (including signature).

<br />

Constant Value: 30 (0x0000001e)  

### LOCHOW

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCHOW
```

Local file (LOC) header compression method field offset.

<br />

Constant Value: 8 (0x00000008)  

### LOCLEN

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCLEN
```

Local file (LOC) header uncompressed size field offset.

<br />

Constant Value: 22 (0x00000016)  

### LOCNAM

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCNAM
```

Local file (LOC) header filename length field offset.

<br />

Constant Value: 26 (0x0000001a)  

### LOCSIG

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final long LOCSIG
```

Local file (LOC) header signature.

<br />

Constant Value: 67324752 (0x0000000004034b50)  

### LOCSIZ

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCSIZ
```

Local file (LOC) header compressed size field offset.

<br />

Constant Value: 18 (0x00000012)  

### LOCTIM

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCTIM
```

Local file (LOC) header modification time field offset.

<br />

Constant Value: 10 (0x0000000a)  

### LOCVER

Added in[API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static final int LOCVER
```

Local file (LOC) header version needed to extract field offset.

<br />

Constant Value: 4 (0x00000004)

## Public constructors

### ZipInputStream

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ZipInputStream (InputStream in)
```

Creates a new ZIP input stream.

The UTF-8[charset](https://developer.android.com/reference/java/nio/charset/Charset)is used to decode the entry names.

<br />

|                     Parameters                      ||
|------|-----------------------------------------------|
| `in` | `InputStream`: the actual input stream <br /> |

### ZipInputStream

Added in[API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ZipInputStream (InputStream in, 
                Charset charset)
```

Creates a new ZIP input stream.

<br />

|                                                                                                                                                             Parameters                                                                                                                                                             ||
|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `in`      | `InputStream`: the actual input stream <br />                                                                                                                                                                                                                                                                           |
| `charset` | `Charset`: The[charset](https://developer.android.com/reference/java/nio/charset/Charset)to be used to decode the ZIP entry name (ignored if the[language encoding bit](https://developer.android.com/reference/java/util/zip/package-summary#lang_encoding)of the ZIP entry's general purpose bit flag is set). <br /> |

## Public methods

### available

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public int available ()
```

Returns 0 after EOF has reached for the current entry data, otherwise always return 1.

Programs should not count on this method to return the actual number of bytes that could be read without blocking.

<br />

|                                  Returns                                  ||
|-------|--------------------------------------------------------------------|
| `int` | 1 before EOF and 0 after EOF has reached for current entry. <br /> |

|                                               Throws                                                ||
|----------------------------------------------------------------------------|-------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | if an I/O error occurs. |

### close

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void close ()
```

Closes this input stream and releases any system resources associated with the stream.

<br />

|                                                  Throws                                                  ||
|----------------------------------------------------------------------------|------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | if an I/O error has occurred |

### closeEntry

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void closeEntry ()
```

Closes the current ZIP entry and positions the stream for reading the next entry.

<br />

|                                                        Throws                                                        ||
|------------------------------------------------------------------------------------|----------------------------------|
| [ZipException](https://developer.android.com/reference/java/util/zip/ZipException) | if a ZIP file error has occurred |
| [IOException](https://developer.android.com/reference/java/io/IOException)         | if an I/O error has occurred     |

### getNextEntry

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ZipEntry getNextEntry ()
```

Reads the next ZIP file entry and positions the stream at the beginning of the entry data.

If the app targets Android U or above, zip file entry names containing ".." or starting with "/" passed here will throw a[ZipException](https://developer.android.com/reference/java/util/zip/ZipException). For more details, see[ZipPathValidator](https://developer.android.com/reference/dalvik/system/ZipPathValidator).

<br />

|                                                                     Returns                                                                      ||
|----------------------------------------------------------------------------|----------------------------------------------------------------------|
| [ZipEntry](https://developer.android.com/reference/java/util/zip/ZipEntry) | the next ZIP file entry, or null if there are no more entries <br /> |

|                                                                                                                       Throws                                                                                                                       ||
|------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ZipException](https://developer.android.com/reference/java/util/zip/ZipException) | if (1) a ZIP file error has occurred or (2)`targetSdkVersion >= BUILD.VERSION_CODES.UPSIDE_DOWN_CAKE`and (the`name`argument contains ".." or starts with "/"). |
| [IOException](https://developer.android.com/reference/java/io/IOException)         | if an I/O error has occurred                                                                                                                                   |

### read

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public int read (byte[] b, 
                int off, 
                int len)
```

Reads from the current ZIP entry into an array of bytes. If`len`is not zero, the method blocks until some input is available; otherwise, no bytes are read and`0`is returned.

<br />

|                            Parameters                             ||
|-------|------------------------------------------------------------|
| `b`   | `byte`: the buffer into which the data is read <br />      |
| `off` | `int`: the start offset in the destination array`b` <br /> |
| `len` | `int`: the maximum number of bytes read <br />             |

|                                         Returns                                         ||
|-------|----------------------------------------------------------------------------------|
| `int` | the actual number of bytes read, or -1 if the end of the entry is reached <br /> |

|                                                                                        Throws                                                                                         ||
|----------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| [NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException)           | if`b`is`null`.                                                              |
| [IndexOutOfBoundsException](https://developer.android.com/reference/java/lang/IndexOutOfBoundsException) | if`off`is negative,`len`is negative, or`len`is greater than`b.length - off` |
| [ZipException](https://developer.android.com/reference/java/util/zip/ZipException)                       | if a ZIP file error has occurred                                            |
| [IOException](https://developer.android.com/reference/java/io/IOException)                               | if an I/O error has occurred                                                |

### skip

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public long skip (long n)
```

Skips specified number of bytes in the current ZIP entry.

<br />

|                   Parameters                    ||
|-----|--------------------------------------------|
| `n` | `long`: the number of bytes to skip <br /> |

|                      Returns                      ||
|--------|-------------------------------------------|
| `long` | the actual number of bytes skipped <br /> |

|                                                                  Throws                                                                  ||
|--------------------------------------------------------------------------------------------------------|----------------------------------|
| [ZipException](https://developer.android.com/reference/java/util/zip/ZipException)                     | if a ZIP file error has occurred |
| [IOException](https://developer.android.com/reference/java/io/IOException)                             | if an I/O error has occurred     |
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if`n < 0`                        |

## Protected methods

### createZipEntry

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
protected ZipEntry createZipEntry (String name)
```

Creates a new`ZipEntry`object for the specified entry name.

<br />

|                    Parameters                    ||
|--------|------------------------------------------|
| `name` | `String`: the ZIP file entry name <br /> |

|                                                   Returns                                                    ||
|----------------------------------------------------------------------------|----------------------------------|
| [ZipEntry](https://developer.android.com/reference/java/util/zip/ZipEntry) | the ZipEntry just created <br /> |