Module java.base
Package java.io

# Class FilterReader

java.lang.Object
java.io.Reader
java.io.FilterReader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Readable`

Direct Known Subclasses:
  `PushbackReader`

    public abstract class FilterReader
    extends Reader

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.

Since:
  1.1

## Field Summary

Fields
Modifier and Type | Field | Description
--- | --- | ---
`protected Reader` | `in` | The underlying character-input stream.

### Fields declared in class java.io.Reader

`lock`

## Constructor Summary

Constructors
Modifier | Constructor | Description
--- | --- | ---
`protected` | `FilterReader​(Reader in)` | Creates a new filtered reader.

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`void` | `mark​(int readAheadLimit)` | Marks the present position in the stream.
`boolean` | `markSupported()` | Tells whether this stream supports the mark() operation.
`int` | `read()` | Reads a single character.
`int` | `read​(char[] cbuf, int off, int len)` | Reads characters into a portion of an array.
`boolean` | `ready()` | Tells whether this stream is ready to be read.
`void` | `reset()` | Resets the stream.
`long` | `skip​(long n)` | Skips characters.

### Methods declared in class java.io.Reader

`close, nullReader, read, read, transferTo`

### Methods declared in class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### in

protected Reader in
The underlying character-input stream.

## Constructor Details

### FilterReader

protected FilterReader​(Reader in)
Creates a new filtered reader.

Parameters:
  `in` - a Reader object providing the underlying stream.
Throws:
  `NullPointerException` - if `in` is `null`

## Method Details

### read

public int read() throws IOException
Reads a single character.

Overrides:
  `read` in class `Reader`
Returns:
  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
Throws:
  `IOException` - If an I/O error occurs

### read

public int read​(char[] cbuf, int off, int len) throws IOException
Reads characters into a portion of an array.

Specified by:
  `read` in class `Reader`
Parameters:
  `cbuf` - Destination buffer
  `off` - Offset at which to start storing characters
  `len` - Maximum number of characters to read
Returns:
  The number of characters read, or -1 if the end of the stream has been reached
Throws:
  `IOException` - If an I/O error occurs
  `IndexOutOfBoundsException` - If an I/O error occurs

### skip

public long skip​(long n) throws IOException
Skips characters.

Overrides:
  `skip` in class `Reader`
Parameters:
  `n` - The number of characters to skip
Returns:
  The number of characters actually skipped
Throws:
  `IOException` - If an I/O error occurs

### ready

public boolean ready() throws IOException
Tells whether this stream is ready to be read.

Overrides:
  `ready` in class `Reader`
Returns:
  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.
Throws:
  `IOException` - If an I/O error occurs

### markSupported

public boolean markSupported()
Tells whether this stream supports the mark() operation.

Overrides:
  `markSupported` in class `Reader`
Returns:
  true if and only if this stream supports the mark operation.

### mark

public void mark​(int readAheadLimit) throws IOException
Marks the present position in the stream.

Overrides:
  `mark` in class `Reader`
Parameters:
  `readAheadLimit` - 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.
Throws:
  `IOException` - If an I/O error occurs

### reset

public void reset() throws IOException
Resets the stream.

Overrides:
  `reset` in class `Reader`
Throws:
  `IOException` - If an I/O error occurs