Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Fields](https://developer.android.com/reference/java/io/FilterOutputStream#lfields) \| [Ctors](https://developer.android.com/reference/java/io/FilterOutputStream#pubctors) \| [Methods](https://developer.android.com/reference/java/io/FilterOutputStream#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/io/FilterOutputStream#inhmethods)

# FilterOutputStream


`
public


class
FilterOutputStream
`


`


`

`

extends https://developer.android.com/reference/java/io/OutputStream


`

`


`

|---|---|---|
| [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 |

|---|
| Known direct subclasses [Base64OutputStream](https://developer.android.com/reference/android/util/Base64OutputStream), [BufferedOutputStream](https://developer.android.com/reference/java/io/BufferedOutputStream), [CheckedOutputStream](https://developer.android.com/reference/java/util/zip/CheckedOutputStream), [CipherOutputStream](https://developer.android.com/reference/javax/crypto/CipherOutputStream), [DataOutputStream](https://developer.android.com/reference/java/io/DataOutputStream), [DeflaterOutputStream](https://developer.android.com/reference/java/util/zip/DeflaterOutputStream), [DigestOutputStream](https://developer.android.com/reference/java/security/DigestOutputStream), [InflaterOutputStream](https://developer.android.com/reference/java/util/zip/InflaterOutputStream), [PrintStream](https://developer.android.com/reference/java/io/PrintStream) |---|---| | [Base64OutputStream](https://developer.android.com/reference/android/util/Base64OutputStream) | An OutputStream that does Base64 encoding on the data written to it, writing the resulting data to another OutputStream. | | [BufferedOutputStream](https://developer.android.com/reference/java/io/BufferedOutputStream) | The class implements a buffered output stream. | | [CheckedOutputStream](https://developer.android.com/reference/java/util/zip/CheckedOutputStream) | An output stream that also maintains a checksum of the data being written. | | [CipherOutputStream](https://developer.android.com/reference/javax/crypto/CipherOutputStream) | A CipherOutputStream is composed of an OutputStream and a Cipher so that write() methods first process the data before writing them out to the underlying OutputStream. | | [DataOutputStream](https://developer.android.com/reference/java/io/DataOutputStream) | A data output stream lets an application write primitive Java data types to an output stream in a portable way. | | [DeflaterOutputStream](https://developer.android.com/reference/java/util/zip/DeflaterOutputStream) | This class implements an output stream filter for compressing data in the "deflate" compression format. | | [DigestOutputStream](https://developer.android.com/reference/java/security/DigestOutputStream) | A transparent stream that updates the associated message digest using the bits going through the stream. | | [InflaterOutputStream](https://developer.android.com/reference/java/util/zip/InflaterOutputStream) | Implements an output stream filter for uncompressing data stored in the "deflate" compression format. | | [PrintStream](https://developer.android.com/reference/java/io/PrintStream) | A `PrintStream` adds functionality to another output stream, namely the ability to print representations of various data values conveniently. | |

|---|
| Known indirect subclasses [GZIPOutputStream](https://developer.android.com/reference/java/util/zip/GZIPOutputStream), [JarOutputStream](https://developer.android.com/reference/java/util/jar/JarOutputStream), [ZipOutputStream](https://developer.android.com/reference/java/util/zip/ZipOutputStream) |---|---| | [GZIPOutputStream](https://developer.android.com/reference/java/util/zip/GZIPOutputStream) | This class implements a stream filter for writing compressed data in the GZIP file format. | | [JarOutputStream](https://developer.android.com/reference/java/util/jar/JarOutputStream) | The `JarOutputStream` class is used to write the contents of a JAR file to any output stream. | | [ZipOutputStream](https://developer.android.com/reference/java/util/zip/ZipOutputStream) | This class implements an output stream filter for writing files in the ZIP file format. | |

<br />

*** ** * ** ***

This class is the superclass of all classes that filter output
streams. These streams sit on top of an already existing output
stream (the *underlying* output stream) which it uses as its
basic sink of data, but possibly transforming the data along the
way or providing additional functionality.


The class `FilterOutputStream` itself simply overrides
all methods of `OutputStream` with versions that pass
all requests to the underlying output stream. Subclasses of
`FilterOutputStream` may further override some of these
methods as well as provide additional methods and fields.

## Summary

| ### Fields ||
|---|---|
| ` 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/io/FilterOutputStream#FilterOutputStream(java.io.OutputStream)(https://developer.android.com/reference/java/io/OutputStream out) ` Creates an output stream filter built on top of the specified underlying output stream. |

| ### Public methods ||
|---|---|
| ` 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. |

| ### Inherited methods |
|---|---|
| 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. | ||

## Fields

### out

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

```
protected OutputStream out
```

The underlying output stream to be filtered.

<br />

## Public constructors

### FilterOutputStream

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

```
public FilterOutputStream (OutputStream out)
```

Creates an output stream filter built on top of the specified
underlying output stream.

<br />

| Parameters ||
|---|---|
| `out` | `OutputStream`: the underlying output stream to be assigned to the field `this.out` for later use, or `null` if this instance is to be created without an underlying stream. <br /> |

## Public methods

### close

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

```
public void close ()
```

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


When not already closed, the `close` method of `FilterOutputStream` calls its `flush` method, and then
calls the `close` method of its underlying output stream.

<br />

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

**See also:**

- `https://developer.android.com/reference/java/io/FilterOutputStream#flush()`
- `https://developer.android.com/reference/java/io/FilterOutputStream#out`

### flush

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

```
public void flush ()
```

Flushes this output stream and forces any buffered output bytes
to be written out to the stream.


The `flush` method of `FilterOutputStream`
calls the `flush` method of its underlying output stream.

<br />

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

**See also:**

- `https://developer.android.com/reference/java/io/FilterOutputStream#out`

### write

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

```
public void write (byte[] b)
```

Writes `b.length` bytes to this output stream.


The `write` method of `FilterOutputStream`
calls its `write` method of three arguments with the
arguments `b`, `0`, and
`b.length`.


Note that this method does not call the one-argument
`write` method of its underlying output stream with
the single argument `b`.

<br />

| Parameters ||
|---|---|
| `b` | `byte`: the data to be written. <br /> |

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

**See also:**

- `https://developer.android.com/reference/java/io/FilterOutputStream#write(byte[],%20int,%20int)`

### write

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

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

Writes `len` bytes from the specified
`byte` array starting at offset `off` to
this output stream.


The `write` method of `FilterOutputStream`
calls the `write` method of one argument on each
`byte` to output.


Note that this method does not call the `write` method
of its underlying output stream with the same arguments. Subclasses
of `FilterOutputStream` should provide a more efficient
implementation of this method.

<br />

| Parameters ||
|---|---|
| `b` | `byte`: the data. <br /> |
| `off` | `int`: the start offset in the data. <br /> |
| `len` | `int`: the number of bytes to write. <br /> |

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

**See also:**

- `https://developer.android.com/reference/java/io/FilterOutputStream#write(int)`

### write

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

```
public void write (int b)
```

Writes the specified `byte` to this output stream.


The `write` method of `FilterOutputStream`
calls the `write` method of its underlying output stream,
that is, it performs `out.write(b)`.


Implements the abstract `write` method of `OutputStream`.

<br />

| Parameters ||
|---|---|
| `b` | `int`: the `byte`. <br /> |

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