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/FilterReader#lfields) \| [Inherited Fields](https://developer.android.com/reference/java/io/FilterReader#inhfields) \| [Protected Ctors](https://developer.android.com/reference/java/io/FilterReader#proctors) \| [Methods](https://developer.android.com/reference/java/io/FilterReader#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/io/FilterReader#inhmethods)

# FilterReader

` public abstract class FilterReader `   
` ` ` extends https://developer.android.com/reference/java/io/Reader ` ` `

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [java.io.Reader](https://developer.android.com/reference/java/io/Reader) ||
|   | ↳ | java.io.FilterReader |

Known direct subclasses [PushbackReader](https://developer.android.com/reference/java/io/PushbackReader) [PushbackReader](https://developer.android.com/reference/java/io/PushbackReader) A character-stream reader that allows characters to be pushed back into the stream.   

*** ** * ** ***

Abstract class for reading filtered character streams. The abstract class `FilterReader` itself provides default methods that pass all requests to the contained stream. Subclasses of `FilterReader` should override some of these methods and may also provide additional methods and fields.

## Summary

| ### Fields ||
|---|---|
| ` protected https://developer.android.com/reference/java/io/Reader` | `https://developer.android.com/reference/java/io/FilterReader#in` The underlying character-input stream. |

### Inherited fields

From class `https://developer.android.com/reference/java/io/Reader` ` protected https://developer.android.com/reference/java/lang/Object` `https://developer.android.com/reference/java/io/Reader#lock`

The object used to synchronize operations on this stream.

| ### Protected constructors ||
|---|---|
| ` https://developer.android.com/reference/java/io/FilterReader#FilterReader(java.io.Reader)(https://developer.android.com/reference/java/io/Reader in) ` Creates a new filtered reader. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/java/io/FilterReader#close()() ` Closes the stream and releases any system resources associated with it. |
| ` void` | ` https://developer.android.com/reference/java/io/FilterReader#mark(int)(int readAheadLimit) ` Marks the present position in the stream. |
| ` boolean` | ` https://developer.android.com/reference/java/io/FilterReader#markSupported()() ` Tells whether this stream supports the mark() operation. |
| ` int` | ` https://developer.android.com/reference/java/io/FilterReader#read()() ` Reads a single character. |
| ` int` | ` https://developer.android.com/reference/java/io/FilterReader#read(char[],%20int,%20int)(char[] cbuf, int off, int len) ` Reads characters into a portion of an array. |
| ` boolean` | ` https://developer.android.com/reference/java/io/FilterReader#ready()() ` Tells whether this stream is ready to be read. |
| ` void` | ` https://developer.android.com/reference/java/io/FilterReader#reset()() ` Resets the stream. |
| ` long` | ` https://developer.android.com/reference/java/io/FilterReader#skip(long)(long n) ` Skips characters. |

### Inherited methods

From class ` https://developer.android.com/reference/java/io/Reader ` ` abstract void` ` https://developer.android.com/reference/java/io/Reader#close()() `

Closes the stream and releases any system resources associated with it.
` void` ` https://developer.android.com/reference/java/io/Reader#mark(int)(int readAheadLimit) `

Marks the present position in the stream.
` boolean` ` https://developer.android.com/reference/java/io/Reader#markSupported()() `

Tells whether this stream supports the mark() operation.
` static https://developer.android.com/reference/java/io/Reader` ` https://developer.android.com/reference/java/io/Reader#nullReader()() `

Returns a new `Reader` that reads no characters.
` int` ` https://developer.android.com/reference/java/io/Reader#read()() `

Reads a single character.
` abstract int` ` https://developer.android.com/reference/java/io/Reader#read(char[],%20int,%20int)(char[] cbuf, int off, int len) `

Reads characters into a portion of an array.
` int` ` https://developer.android.com/reference/java/io/Reader#read(char[])(char[] cbuf) `

Reads characters into an array.
` int` ` https://developer.android.com/reference/java/io/Reader#read(java.nio.CharBuffer)(https://developer.android.com/reference/java/nio/CharBuffer target) `

Attempts to read characters into the specified character buffer.
` boolean` ` https://developer.android.com/reference/java/io/Reader#ready()() `

Tells whether this stream is ready to be read.
` void` ` https://developer.android.com/reference/java/io/Reader#reset()() `

Resets the stream.
` long` ` https://developer.android.com/reference/java/io/Reader#skip(long)(long n) `

Skips characters.
` long` ` https://developer.android.com/reference/java/io/Reader#transferTo(java.io.Writer)(https://developer.android.com/reference/java/io/Writer out) `

Reads all characters from this reader and writes the characters to the given writer 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/Readable ` ` abstract int` ` https://developer.android.com/reference/java/lang/Readable#read(java.nio.CharBuffer)(https://developer.android.com/reference/java/nio/CharBuffer cb) `

Attempts to read characters into the specified character buffer.
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

### in

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

```
protected Reader in
```

The underlying character-input stream.

<br />

## Protected constructors

### FilterReader

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

```
protected FilterReader (Reader in)
```

Creates a new filtered reader.

<br />

| Parameters ||
|---|---|
| `in` | `Reader`: a Reader object providing the underlying stream. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | if `in` is `null` |

## Public methods

### close

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

```
public void close ()
```

Closes the stream and releases any system resources associated with it. Once the stream has been closed, further read(), ready(), mark(), reset(), or skip() invocations will throw an IOException. Closing a previously closed stream has no effect.

<br />

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` |   |

### mark

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

```
public void mark (int readAheadLimit)
```

Marks the present position in the stream.

<br />

| Parameters ||
|---|---|
| `readAheadLimit` | `int`: Limit on the number of characters that may be read while still preserving the mark. After reading this many characters, attempting to reset the stream may fail. <br /> |

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

### markSupported

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

```
public boolean markSupported ()
```

Tells whether this stream supports the mark() operation.

<br />

| Returns ||
|---|---|
| `boolean` | true if and only if this stream supports the mark operation. <br /> |

### read

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

```
public int read ()
```

Reads a single character.

<br />

| Returns ||
|---|---|
| `int` | The character read, as an integer in the range 0 to 65535 (`0x00-0xffff`), or -1 if the end of the stream has been reached <br /> |

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

### read

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

```
public int read (char[] cbuf, 
                int off, 
                int len)
```

Reads characters into a portion of an array.

<br />

| Parameters ||
|---|---|
| `cbuf` | `char`: Destination buffer <br /> |
| `off` | `int`: Offset at which to start storing characters <br /> |
| `len` | `int`: Maximum number of characters to read <br /> |

| Returns ||
|---|---|
| `int` | The number of characters read, or -1 if the end of the stream has been reached <br /> |

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

### ready

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

```
public boolean ready ()
```

Tells whether this stream is ready to be read.

<br />

| Returns ||
|---|---|
| `boolean` | True if the next read() is guaranteed not to block for input, false otherwise. Note that returning false does not guarantee that the next read will block. <br /> |

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

### reset

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

```
public void reset ()
```

Resets the stream.

<br />

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

### skip

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

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

Skips characters.

<br />

| Parameters ||
|---|---|
| `n` | `long`: The number of characters to skip <br /> |

| Returns ||
|---|---|
| `long` | The number of characters actually skipped <br /> |

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