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

# JarInputStream


`
public


class
JarInputStream
`


`


`

`


`

`


`

`


`

`

extends https://developer.android.com/reference/java/util/zip/ZipInputStream


`

`


`

|---|---|---|---|---|---|
| [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](https://developer.android.com/reference/java/util/zip/ZipInputStream) ||
|   |   |   |   | ↳ | java.util.jar.JarInputStream |

<br />

*** ** * ** ***

The `JarInputStream` class is used to read the contents of
a JAR file from any input stream. It extends the class
`java.util.zip.ZipInputStream` with support for reading
an optional `Manifest` entry. The `Manifest`
can be used to store meta-information about the JAR file and its entries.
**See also:**

- `https://developer.android.com/reference/java/util/jar/Manifest`
- `https://developer.android.com/reference/java/util/zip/ZipInputStream`

## Summary

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

| ### Inherited fields |
|---|
| From class `https://developer.android.com/reference/java/util/zip/InflaterInputStream` |---|---| | ` protected byte[]` | `https://developer.android.com/reference/java/util/zip/InflaterInputStream#buf` Input buffer for decompression. | | ` protected boolean` | `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 https://developer.android.com/reference/java/util/zip/Inflater` | `https://developer.android.com/reference/java/util/zip/InflaterInputStream#inf` Decompressor for this stream. | | ` protected int` | `https://developer.android.com/reference/java/util/zip/InflaterInputStream#len` Length of input buffer. | |
| From class `https://developer.android.com/reference/java/io/FilterInputStream` |---|---| | ` protected https://developer.android.com/reference/java/io/InputStream` | `https://developer.android.com/reference/java/io/FilterInputStream#in` The input stream to be filtered. | |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/java/util/jar/JarInputStream#JarInputStream(java.io.InputStream)(https://developer.android.com/reference/java/io/InputStream in) ` Creates a new `JarInputStream` and reads the optional manifest. |
| ` https://developer.android.com/reference/java/util/jar/JarInputStream#JarInputStream(java.io.InputStream,%20boolean)(https://developer.android.com/reference/java/io/InputStream in, boolean verify) ` Creates a new `JarInputStream` and reads the optional manifest. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/util/jar/Manifest` | ` https://developer.android.com/reference/java/util/jar/JarInputStream#getManifest()() ` Returns the `Manifest` for this JAR file, or `null` if none. |
| ` https://developer.android.com/reference/java/util/zip/ZipEntry` | ` https://developer.android.com/reference/java/util/jar/JarInputStream#getNextEntry()() ` Reads the next ZIP file entry and positions the stream at the beginning of the entry data. |
| ` https://developer.android.com/reference/java/util/jar/JarEntry` | ` https://developer.android.com/reference/java/util/jar/JarInputStream#getNextJarEntry()() ` Reads the next JAR file entry and positions the stream at the beginning of the entry data. |
| ` int` | ` https://developer.android.com/reference/java/util/jar/JarInputStream#read(byte[],%20int,%20int)(byte[] b, int off, int len) ` Reads from the current JAR file entry into an array of bytes. |

| ### Protected methods ||
|---|---|
| ` https://developer.android.com/reference/java/util/zip/ZipEntry` | ` https://developer.android.com/reference/java/util/jar/JarInputStream#createZipEntry(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Creates a new `JarEntry` (`ZipEntry`) for the specified JAR file entry name. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/util/zip/ZipInputStream ` |---|---| | ` int` | ` 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` | ` https://developer.android.com/reference/java/util/zip/ZipInputStream#close()() ` Closes this input stream and releases any system resources associated with the stream. | | ` void` | ` https://developer.android.com/reference/java/util/zip/ZipInputStream#closeEntry()() ` Closes the current ZIP entry and positions the stream for reading the next entry. | | ` https://developer.android.com/reference/java/util/zip/ZipEntry` | ` https://developer.android.com/reference/java/util/zip/ZipInputStream#createZipEntry(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Creates a new `ZipEntry` object for the specified entry name. | | ` https://developer.android.com/reference/java/util/zip/ZipEntry` | ` 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` | ` 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` | ` https://developer.android.com/reference/java/util/zip/ZipInputStream#skip(long)(long n) ` Skips specified number of bytes in the current ZIP entry. | ||
| From class ` https://developer.android.com/reference/java/util/zip/InflaterInputStream ` |---|---| | ` int` | ` https://developer.android.com/reference/java/util/zip/InflaterInputStream#available()() ` Returns 0 after EOF has been reached, otherwise always return 1. | | ` void` | ` https://developer.android.com/reference/java/util/zip/InflaterInputStream#close()() ` Closes this input stream and releases any system resources associated with the stream. | | ` void` | ` https://developer.android.com/reference/java/util/zip/InflaterInputStream#fill()() ` Fills input buffer with more data to decompress. | | ` void` | ` https://developer.android.com/reference/java/util/zip/InflaterInputStream#mark(int)(int readlimit) ` Marks the current position in this input stream. | | ` boolean` | ` https://developer.android.com/reference/java/util/zip/InflaterInputStream#markSupported()() ` Tests if this input stream supports the `mark` and `reset` methods. | | ` int` | ` https://developer.android.com/reference/java/util/zip/InflaterInputStream#read()() ` Reads a byte of uncompressed data. | | ` int` | ` 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` | ` 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` | ` https://developer.android.com/reference/java/util/zip/InflaterInputStream#skip(long)(long n) ` Skips specified number of bytes of uncompressed data. | ||
| From class ` https://developer.android.com/reference/java/io/FilterInputStream ` |---|---| | ` int` | ` 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` | ` https://developer.android.com/reference/java/io/FilterInputStream#close()() ` Closes this input stream and releases any system resources associated with the stream. | | ` void` | ` https://developer.android.com/reference/java/io/FilterInputStream#mark(int)(int readlimit) ` Marks the current position in this input stream. | | ` boolean` | ` https://developer.android.com/reference/java/io/FilterInputStream#markSupported()() ` Tests if this input stream supports the `mark` and `reset` methods. | | ` int` | ` https://developer.android.com/reference/java/io/FilterInputStream#read()() ` Reads the next byte of data from this input stream. | | ` int` | ` 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` | ` 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` | ` 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` | ` 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 ` https://developer.android.com/reference/java/io/InputStream ` |---|---| | ` int` | ` 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` | ` https://developer.android.com/reference/java/io/InputStream#close()() ` Closes this input stream and releases any system resources associated with the stream. | | ` void` | ` https://developer.android.com/reference/java/io/InputStream#mark(int)(int readlimit) ` Marks the current position in this input stream. | | ` boolean` | ` https://developer.android.com/reference/java/io/InputStream#markSupported()() ` Tests if this input stream supports the `mark` and `reset` methods. | | ` static https://developer.android.com/reference/java/io/InputStream` | ` https://developer.android.com/reference/java/io/InputStream#nullInputStream()() ` Returns a new `InputStream` that reads no bytes. | | ` int` | ` 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` | ` https://developer.android.com/reference/java/io/InputStream#read()() ` Reads the next byte of data from the input stream. | | ` int` | ` 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[]` | ` https://developer.android.com/reference/java/io/InputStream#readAllBytes()() ` Reads all remaining bytes from the input stream. | | ` int` | ` 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[]` | ` 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` | ` 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` | ` 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` | ` 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` | ` https://developer.android.com/reference/java/io/InputStream#transferTo(java.io.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 ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` 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 https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` 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` | ` 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` | ` 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 ` https://developer.android.com/reference/java/io/Closeable ` |---|---| | ` abstract void` | ` https://developer.android.com/reference/java/io/Closeable#close()() ` Closes this stream and releases any system resources associated with it. | ||
| From interface ` https://developer.android.com/reference/java/lang/AutoCloseable ` |---|---| | ` abstract void` | ` https://developer.android.com/reference/java/lang/AutoCloseable#close()() ` Closes this resource, relinquishing any underlying resources. | ||

## Public constructors

### JarInputStream

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

```
public JarInputStream (InputStream in)
```

Creates a new `JarInputStream` and reads the optional
manifest. If a manifest is present, also attempts to verify
the signatures if the JarInputStream is signed.

<br />

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

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

### JarInputStream

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

```
public JarInputStream (InputStream in, 
                boolean verify)
```

Creates a new `JarInputStream` and reads the optional
manifest. If a manifest is present and verify is true, also attempts
to verify the signatures if the JarInputStream is signed.

<br />

| Parameters ||
|---|---|
| `in` | `InputStream`: the actual input stream <br /> |
| `verify` | `boolean`: whether or not to verify the JarInputStream if it is signed. <br /> |

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

## Public methods

### getManifest

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

```
public Manifest getManifest ()
```

Returns the `Manifest` for this JAR file, or
`null` if none.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/jar/Manifest` | the `Manifest` for this JAR file, or `null` if none. <br /> |

### 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 verification has been enabled,
any invalid signature detected while positioning the stream for
the next entry will result in an exception.

<br />

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | if an I/O error has occurred |
| `https://developer.android.com/reference/java/lang/SecurityException` | if any of the jar file entries are incorrectly signed. |
| `https://developer.android.com/reference/java/util/zip/ZipException` | if a ZIP file error has occurred |

### getNextJarEntry

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

```
public JarEntry getNextJarEntry ()
```

Reads the next JAR file entry and positions the stream at the
beginning of the entry data. If verification has been enabled,
any invalid signature detected while positioning the stream for
the next entry will result in an exception.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/jar/JarEntry` | the next JAR file entry, or null if there are no more entries <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | if an I/O error has occurred |
| `https://developer.android.com/reference/java/lang/SecurityException` | if any of the jar file entries are incorrectly signed. |
| `https://developer.android.com/reference/java/util/zip/ZipException` | if a ZIP file 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 JAR file 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.
If verification has been enabled, any invalid signature
on the current entry will be reported at some point before the
end of the entry is reached.

<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 to read <br /> |

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | if an I/O error has occurred |
| `https://developer.android.com/reference/java/lang/IndexOutOfBoundsException` | If `off` is negative, `len` is negative, or `len` is greater than `b.length - off` |
| `https://developer.android.com/reference/java/lang/NullPointerException` | If `b` is `null`. |
| `https://developer.android.com/reference/java/lang/SecurityException` | if any of the jar file entries are incorrectly signed. |
| `https://developer.android.com/reference/java/util/zip/ZipException` | if a ZIP file error has occurred |

## 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 `JarEntry` (`ZipEntry`) for the
specified JAR file entry name. The manifest attributes of
the specified JAR file entry name will be copied to the new
`JarEntry`.

<br />

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/zip/ZipEntry` | the `JarEntry` object just created <br /> |