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

# JarOutputStream

` public class JarOutputStream `   
` ` ` ` ` ` ` ` ` extends https://developer.android.com/reference/java/util/zip/ZipOutputStream ` ` `

|---|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||||||
| ↳ | [java.io.OutputStream](https://developer.android.com/reference/java/io/OutputStream) |||||
|   | ↳ | [java.io.FilterOutputStream](https://developer.android.com/reference/java/io/FilterOutputStream) ||||
|   |   | ↳ | [java.util.zip.DeflaterOutputStream](https://developer.android.com/reference/java/util/zip/DeflaterOutputStream) |||
|   |   |   | ↳ | [java.util.zip.ZipOutputStream](https://developer.android.com/reference/java/util/zip/ZipOutputStream) ||
|   |   |   |   | ↳ | java.util.jar.JarOutputStream |

<br />

*** ** * ** ***

The `JarOutputStream` class is used to write the contents of a JAR file to any output stream. It extends the class `java.util.zip.ZipOutputStream` with support for writing an optional `Manifest` entry. The `Manifest` can be used to specify 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/ZipOutputStream`

## Summary

### Inherited constants

From class `https://developer.android.com/reference/java/util/zip/ZipOutputStream` `int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENATT`

Central directory (CEN) header internal file attributes field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENATX`

Central directory (CEN) header external file attributes field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENCOM`

Central directory (CEN) header comment length field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENCRC`

Central directory (CEN) header uncompressed file crc-32 value field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENDSK`

Central directory (CEN) header disk number start field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENEXT`

Central directory (CEN) header extra field length field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENFLG`

Central directory (CEN) header encrypt, decrypt flags field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENHDR`

Central directory (CEN) header size in bytes (including signature).
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENHOW`

Central directory (CEN) header compression method field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENLEN`

Central directory (CEN) header uncompressed size field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENNAM`

Central directory (CEN) header filename length field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENOFF`

Central directory (CEN) header LOC header offset field offset.
`long` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENSIG`

Central directory (CEN) header signature.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENSIZ`

Central directory (CEN) header compressed size field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENTIM`

Central directory (CEN) header modification time field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENVEM`

Central directory (CEN) header version made by field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#CENVER`

Central directory (CEN) header version needed to extract field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#DEFLATED`

Compression method for compressed (DEFLATED) entries.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#ENDCOM`

End of central directory (END) header zip file comment length field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#ENDHDR`

End of central directory (END) header size in bytes (including signature).
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#ENDOFF`

End of central directory (END) header offset for the first CEN header field offset.
`long` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#ENDSIG`

End of central directory (END) header signature.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#ENDSIZ`

End of central directory (END) header central directory size in bytes field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#ENDSUB`

End of central directory (END) header number of entries on this disk field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#ENDTOT`

End of central directory (END) header total number of entries field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#EXTCRC`

Extra local (EXT) header uncompressed file crc-32 value field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#EXTHDR`

Extra local (EXT) header size in bytes (including signature).
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#EXTLEN`

Extra local (EXT) header uncompressed size field offset.
`long` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#EXTSIG`

Extra local (EXT) header signature.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#EXTSIZ`

Extra local (EXT) header compressed size field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCCRC`

Local file (LOC) header uncompressed file crc-32 value field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCEXT`

Local file (LOC) header extra field length field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCFLG`

Local file (LOC) header general purpose bit flag field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCHDR`

Local file (LOC) header size in bytes (including signature).
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCHOW`

Local file (LOC) header compression method field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCLEN`

Local file (LOC) header uncompressed size field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCNAM`

Local file (LOC) header filename length field offset.
`long` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCSIG`

Local file (LOC) header signature.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCSIZ`

Local file (LOC) header compressed size field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCTIM`

Local file (LOC) header modification time field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#LOCVER`

Local file (LOC) header version needed to extract field offset.
`int` `https://developer.android.com/reference/java/util/zip/ZipOutputStream#STORED`

Compression method for uncompressed (STORED) entries.

### Inherited fields

From class `https://developer.android.com/reference/java/util/zip/DeflaterOutputStream` ` protected byte[]` `https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#buf`

Output buffer for writing compressed data.
` protected https://developer.android.com/reference/java/util/zip/Deflater` `https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#def`

Compressor for this stream.
From class `https://developer.android.com/reference/java/io/FilterOutputStream` ` protected https://developer.android.com/reference/java/io/OutputStream` `https://developer.android.com/reference/java/io/FilterOutputStream#out`

The underlying output stream to be filtered.

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/java/util/jar/JarOutputStream#JarOutputStream(java.io.OutputStream)(https://developer.android.com/reference/java/io/OutputStream out) ` Creates a new `JarOutputStream` with no manifest. |
| ` https://developer.android.com/reference/java/util/jar/JarOutputStream#JarOutputStream(java.io.OutputStream,%20java.util.jar.Manifest)(https://developer.android.com/reference/java/io/OutputStream out, https://developer.android.com/reference/java/util/jar/Manifest man) ` Creates a new `JarOutputStream` with the specified `Manifest`. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/java/util/jar/JarOutputStream#putNextEntry(java.util.zip.ZipEntry)(https://developer.android.com/reference/java/util/zip/ZipEntry ze) ` Begins writing a new JAR file entry and positions the stream to the start of the entry data. |

### Inherited methods

From class ` https://developer.android.com/reference/java/util/zip/ZipOutputStream ` ` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#close()() `

Closes the ZIP output stream as well as the stream being filtered.
` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#closeEntry()() `

Closes the current ZIP entry and positions the stream for writing the next entry.
` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#finish()() `

Finishes writing the contents of the ZIP output stream without closing the underlying stream.
` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#putNextEntry(java.util.zip.ZipEntry)(https://developer.android.com/reference/java/util/zip/ZipEntry e) `

Begins writing a new ZIP file entry and positions the stream to the start of the entry data.
` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#setComment(java.lang.String)(https://developer.android.com/reference/java/lang/String comment) `

Sets the ZIP file comment.
` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#setLevel(int)(int level) `

Sets the compression level for subsequent entries which are DEFLATED.
` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#setMethod(int)(int method) `

Sets the default compression method for subsequent entries.
` void` ` https://developer.android.com/reference/java/util/zip/ZipOutputStream#write(byte[],%20int,%20int)(byte[] b, int off, int len) `

Writes an array of bytes to the current ZIP entry data.
From class ` https://developer.android.com/reference/java/util/zip/DeflaterOutputStream ` ` void` ` https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#close()() `

Writes remaining compressed data to the output stream and closes the underlying stream.
` void` ` https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#deflate()() `

Writes next block of compressed data to the output stream.
` void` ` https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#finish()() `

Finishes writing compressed data to the output stream without closing the underlying stream.
` void` ` https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#flush()() `

Flushes the compressed output stream.
` void` ` https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#write(byte[],%20int,%20int)(byte[] b, int off, int len) `

Writes an array of bytes to the compressed output stream.
` void` ` https://developer.android.com/reference/java/util/zip/DeflaterOutputStream#write(int)(int b) `

Writes a byte to the compressed output stream.
From class ` https://developer.android.com/reference/java/io/FilterOutputStream ` ` void` ` https://developer.android.com/reference/java/io/FilterOutputStream#close()() `

Closes this output stream and releases any system resources associated with the stream.
` void` ` https://developer.android.com/reference/java/io/FilterOutputStream#flush()() `

Flushes this output stream and forces any buffered output bytes to be written out to the stream.
` void` ` https://developer.android.com/reference/java/io/FilterOutputStream#write(byte[])(byte[] b) `

Writes `b.length` bytes to this output stream.
` void` ` https://developer.android.com/reference/java/io/FilterOutputStream#write(byte[],%20int,%20int)(byte[] b, int off, int len) `

Writes `len` bytes from the specified `byte` array starting at offset `off` to this output stream.
` void` ` https://developer.android.com/reference/java/io/FilterOutputStream#write(int)(int b) `

Writes the specified `byte` to this output stream.
From class ` https://developer.android.com/reference/java/io/OutputStream ` ` void` ` https://developer.android.com/reference/java/io/OutputStream#close()() `

Closes this output stream and releases any system resources associated with this stream.
` void` ` https://developer.android.com/reference/java/io/OutputStream#flush()() `

Flushes this output stream and forces any buffered output bytes to be written out.
` static https://developer.android.com/reference/java/io/OutputStream` ` https://developer.android.com/reference/java/io/OutputStream#nullOutputStream()() `

Returns a new `OutputStream` which discards all bytes.
` void` ` https://developer.android.com/reference/java/io/OutputStream#write(byte[])(byte[] b) `

Writes `b.length` bytes from the specified byte array to this output stream.
` void` ` https://developer.android.com/reference/java/io/OutputStream#write(byte[],%20int,%20int)(byte[] b, int off, int len) `

Writes `len` bytes from the specified byte array starting at offset `off` to this output stream.
` abstract void` ` https://developer.android.com/reference/java/io/OutputStream#write(int)(int b) `

Writes the specified byte to this output stream.
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/io/Flushable ` ` abstract void` ` https://developer.android.com/reference/java/io/Flushable#flush()() `

Flushes this stream by writing any buffered output to the underlying stream.
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

### JarOutputStream

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

```
public JarOutputStream (OutputStream out)
```

Creates a new `JarOutputStream` with no manifest.

<br />

| Parameters ||
|---|---|
| `out` | `OutputStream`: the actual output stream <br /> |

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

### JarOutputStream

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

```
public JarOutputStream (OutputStream out, 
                Manifest man)
```

Creates a new `JarOutputStream` with the specified `Manifest`. The manifest is written as the first entry to the output stream.

<br />

| Parameters ||
|---|---|
| `out` | `OutputStream`: the actual output stream <br /> |
| `man` | `Manifest`: the optional `Manifest` <br /> |

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

## Public methods

### putNextEntry

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

```
public void putNextEntry (ZipEntry ze)
```

Begins writing a new JAR file entry and positions the stream to the start of the entry data. This method will also close any previous entry. The default compression method will be used if no compression method was specified for the entry. The current time will be used if the entry has no set modification time.

<br />

| Parameters ||
|---|---|
| `ze` | `ZipEntry`: the ZIP/JAR entry to be written <br /> |

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