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/jar/JarFile#constants) \| [Inherited Constants](https://developer.android.com/reference/java/util/jar/JarFile#inhconstants) \| [Ctors](https://developer.android.com/reference/java/util/jar/JarFile#pubctors) \| [Methods](https://developer.android.com/reference/java/util/jar/JarFile#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/util/jar/JarFile#inhmethods)

# JarFile


`
public


class
JarFile
`


`


`

`

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


`

`


`

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [java.util.zip.ZipFile](https://developer.android.com/reference/java/util/zip/ZipFile) ||
|   | ↳ | java.util.jar.JarFile |

<br />

*** ** * ** ***

The `JarFile` class is used to read the contents of a jar file
from any file that can be opened with `java.io.RandomAccessFile`.
It extends the class `java.util.zip.ZipFile` with support
for reading an optional `Manifest` entry. The
`Manifest` can be used to specify meta-information about the
jar file and its entries.

Unless otherwise noted, passing a null argument to a constructor
or method in this class will cause a `https://developer.android.com/reference/java/lang/NullPointerException` to be
thrown.

If the verify flag is on when opening a signed jar file, the content of the
file is verified against its signature embedded inside the file. Please note
that the verification process does not include validating the signer's
certificate. A caller should inspect the return value of
`https://developer.android.com/reference/java/util/jar/JarEntry#getCodeSigners()` to further determine if the signature
can be trusted.
**See also:**

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

## Summary

| ### Constants ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/java/util/jar/JarFile#MANIFEST_NAME` The JAR manifest file name. |

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

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/java/util/jar/JarFile#JarFile(java.io.File)(https://developer.android.com/reference/java/io/File file) ` Creates a new `JarFile` to read from the specified `File` object. |
| ` https://developer.android.com/reference/java/util/jar/JarFile#JarFile(java.io.File,%20boolean)(https://developer.android.com/reference/java/io/File file, boolean verify) ` Creates a new `JarFile` to read from the specified `File` object. |
| ` https://developer.android.com/reference/java/util/jar/JarFile#JarFile(java.io.File,%20boolean,%20int)(https://developer.android.com/reference/java/io/File file, boolean verify, int mode) ` Creates a new `JarFile` to read from the specified `File` object in the specified mode. |
| ` https://developer.android.com/reference/java/util/jar/JarFile#JarFile(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Creates a new `JarFile` to read from the specified file `name`. |
| ` https://developer.android.com/reference/java/util/jar/JarFile#JarFile(java.lang.String,%20boolean)(https://developer.android.com/reference/java/lang/String name, boolean verify) ` Creates a new `JarFile` to read from the specified file `name`. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/util/Enumeration<https://developer.android.com/reference/java/util/jar/JarEntry>` | ` https://developer.android.com/reference/java/util/jar/JarFile#entries()() ` Returns an enumeration of the zip file entries. |
| ` https://developer.android.com/reference/java/util/zip/ZipEntry` | ` https://developer.android.com/reference/java/util/jar/JarFile#getEntry(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Returns the `ZipEntry` for the given entry name or `null` if not found. |
| ` https://developer.android.com/reference/java/io/InputStream` | ` https://developer.android.com/reference/java/util/jar/JarFile#getInputStream(java.util.zip.ZipEntry)(https://developer.android.com/reference/java/util/zip/ZipEntry ze) ` Returns an input stream for reading the contents of the specified zip file entry. |
| ` https://developer.android.com/reference/java/util/jar/JarEntry` | ` https://developer.android.com/reference/java/util/jar/JarFile#getJarEntry(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Returns the `JarEntry` for the given entry name or `null` if not found. |
| ` https://developer.android.com/reference/java/util/jar/Manifest` | ` https://developer.android.com/reference/java/util/jar/JarFile#getManifest()() ` Returns the jar file manifest, or `null` if none. |
| ` https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/jar/JarEntry>` | ` https://developer.android.com/reference/java/util/jar/JarFile#stream()() ` Returns an ordered `Stream` over the ZIP file entries. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/util/zip/ZipFile ` |---|---| | ` void` | ` https://developer.android.com/reference/java/util/zip/ZipFile#close()() ` Closes the ZIP file. | | ` https://developer.android.com/reference/java/util/Enumeration<? extends https://developer.android.com/reference/java/util/zip/ZipEntry>` | ` https://developer.android.com/reference/java/util/zip/ZipFile#entries()() ` Returns an enumeration of the ZIP file entries. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/util/zip/ZipFile#getComment()() ` Returns the zip file comment, or null if none. | | ` https://developer.android.com/reference/java/util/zip/ZipEntry` | ` https://developer.android.com/reference/java/util/zip/ZipFile#getEntry(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Returns the zip file entry for the specified name, or null if not found. | | ` https://developer.android.com/reference/java/io/InputStream` | ` https://developer.android.com/reference/java/util/zip/ZipFile#getInputStream(java.util.zip.ZipEntry)(https://developer.android.com/reference/java/util/zip/ZipEntry entry) ` Returns an input stream for reading the contents of the specified zip file entry. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/util/zip/ZipFile#getName()() ` Returns the path name of the ZIP file. | | ` int` | ` https://developer.android.com/reference/java/util/zip/ZipFile#size()() ` Returns the number of entries in the ZIP file. | | ` https://developer.android.com/reference/java/util/stream/Stream<? extends https://developer.android.com/reference/java/util/zip/ZipEntry>` | ` https://developer.android.com/reference/java/util/zip/ZipFile#stream()() ` Returns an ordered `Stream` over the ZIP file entries. | ||
| 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. | ||

## Constants

### MANIFEST_NAME

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

```
public static final String MANIFEST_NAME
```

The JAR manifest file name.

<br />

Constant Value:

"META-INF/MANIFEST.MF"


## Public constructors

### JarFile

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

```
public JarFile (File file)
```

Creates a new `JarFile` to read from the specified
`File` object. The `JarFile` will be verified if
it is signed.

<br />

| Parameters ||
|---|---|
| `file` | `File`: the jar file to be opened for reading <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 access to the file is denied by the SecurityManager |

### JarFile

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

```
public JarFile (File file, 
                boolean verify)
```

Creates a new `JarFile` to read from the specified
`File` object.

<br />

| Parameters ||
|---|---|
| `file` | `File`: the jar file to be opened for reading <br /> |
| `verify` | `boolean`: whether or not to verify the jar file if it is signed. <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 access to the file is denied by the SecurityManager. |

### JarFile

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

```
public JarFile (File file, 
                boolean verify, 
                int mode)
```

Creates a new `JarFile` to read from the specified
`File` object in the specified mode. The mode argument
must be either OPEN_READ or OPEN_READ \| OPEN_DELETE.

<br />

| Parameters ||
|---|---|
| `file` | `File`: the jar file to be opened for reading <br /> |
| `verify` | `boolean`: whether or not to verify the jar file if it is signed. <br /> |
| `mode` | `int`: the mode in which the file is to be opened <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | if an I/O error has occurred |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the mode argument is invalid |
| `https://developer.android.com/reference/java/lang/SecurityException` | if access to the file is denied by the SecurityManager |

### JarFile

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

```
public JarFile (String name)
```

Creates a new `JarFile` to read from the specified
file `name`. The `JarFile` will be verified if
it is signed.

<br />

| Parameters ||
|---|---|
| `name` | `String`: the name of the jar file to be opened for reading <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 access to the file is denied by the SecurityManager |

### JarFile

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

```
public JarFile (String name, 
                boolean verify)
```

Creates a new `JarFile` to read from the specified
file `name`.

<br />

| Parameters ||
|---|---|
| `name` | `String`: the name of the jar file to be opened for reading <br /> |
| `verify` | `boolean`: whether or not to verify the jar file if it is signed. <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 access to the file is denied by the SecurityManager |

## Public methods

### entries

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

```
public Enumeration<JarEntry> entries ()
```

Returns an enumeration of the zip file entries.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Enumeration<https://developer.android.com/reference/java/util/jar/JarEntry>` | an enumeration of the ZIP file entries <br /> |

### getEntry

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

```
public ZipEntry getEntry (String name)
```

Returns the `ZipEntry` for the given entry name or
`null` if not found.

<br />

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/zip/ZipEntry` | the `ZipEntry` for the given entry name or `null` if not found <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | may be thrown if the jar file has been closed |

**See also:**

- `https://developer.android.com/reference/java/util/zip/ZipEntry`

### getInputStream

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

```
public InputStream getInputStream (ZipEntry ze)
```

Returns an input stream for reading the contents of the specified
zip file entry.

<br />

| Parameters ||
|---|---|
| `ze` | `ZipEntry`: the zip file entry <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/io/InputStream` | an input stream for reading the contents of the specified zip file entry <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | if an I/O error has occurred |
| `https://developer.android.com/reference/java/lang/IllegalStateException` | may be thrown if the jar file has been closed |
| `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 format error has occurred |

### getJarEntry

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

```
public JarEntry getJarEntry (String name)
```

Returns the `JarEntry` for the given entry name or
`null` if not found.

<br />

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/jar/JarEntry` | the `JarEntry` for the given entry name or `null` if not found. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | may be thrown if the jar file has been closed |

**See also:**

- `https://developer.android.com/reference/java/util/jar/JarEntry`

### getManifest

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

```
public Manifest getManifest ()
```

Returns the jar file manifest, or `null` if none.

<br />

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | if an I/O error has occurred |
| `https://developer.android.com/reference/java/lang/IllegalStateException` | may be thrown if the jar file has been closed |

### stream

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

```
public Stream<JarEntry> stream ()
```

Returns an ordered `Stream` over the ZIP file entries.

Entries appear in the `Stream` in the order they appear in
the central directory of the ZIP file.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/jar/JarEntry>` | an ordered `Stream` of entries in this ZIP file <br /> |