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

# PushbackReader

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

|---|---|---|---|
| [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](https://developer.android.com/reference/java/io/FilterReader) ||
|   |   | ↳ | java.io.PushbackReader |

<br />

*** ** * ** ***

A character-stream reader that allows characters to be pushed back into the stream.

## Summary

### Inherited fields

From class `https://developer.android.com/reference/java/io/FilterReader` ` protected https://developer.android.com/reference/java/io/Reader` `https://developer.android.com/reference/java/io/FilterReader#in`

The underlying character-input stream.
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.

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/java/io/PushbackReader#PushbackReader(java.io.Reader)(https://developer.android.com/reference/java/io/Reader in) ` Creates a new pushback reader with a one-character pushback buffer. |
| ` https://developer.android.com/reference/java/io/PushbackReader#PushbackReader(java.io.Reader,%20int)(https://developer.android.com/reference/java/io/Reader in, int size) ` Creates a new pushback reader with a pushback buffer of the given size. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/java/io/PushbackReader#close()() ` Closes the stream and releases any system resources associated with it. |
| ` void` | ` https://developer.android.com/reference/java/io/PushbackReader#mark(int)(int readAheadLimit) ` Marks the present position in the stream. |
| ` boolean` | ` https://developer.android.com/reference/java/io/PushbackReader#markSupported()() ` Tells whether this stream supports the mark() operation, which it does not. |
| ` int` | ` https://developer.android.com/reference/java/io/PushbackReader#read()() ` Reads a single character. |
| ` int` | ` https://developer.android.com/reference/java/io/PushbackReader#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/PushbackReader#ready()() ` Tells whether this stream is ready to be read. |
| ` void` | ` https://developer.android.com/reference/java/io/PushbackReader#reset()() ` Resets the stream. |
| ` long` | ` https://developer.android.com/reference/java/io/PushbackReader#skip(long)(long n) ` Skips characters. |
| ` void` | ` https://developer.android.com/reference/java/io/PushbackReader#unread(char[],%20int,%20int)(char[] cbuf, int off, int len) ` Pushes back a portion of an array of characters by copying it to the front of the pushback buffer. |
| ` void` | ` https://developer.android.com/reference/java/io/PushbackReader#unread(char[])(char[] cbuf) ` Pushes back an array of characters by copying it to the front of the pushback buffer. |
| ` void` | ` https://developer.android.com/reference/java/io/PushbackReader#unread(int)(int c) ` Pushes back a single character by copying it to the front of the pushback buffer. |

### Inherited methods

From class ` https://developer.android.com/reference/java/io/FilterReader ` ` 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.
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.

## Public constructors

### PushbackReader

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

```
public PushbackReader (Reader in)
```

Creates a new pushback reader with a one-character pushback buffer.

<br />

| Parameters ||
|---|---|
| `in` | `Reader`: The reader from which characters will be read <br /> |

### PushbackReader

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

```
public PushbackReader (Reader in, 
                int size)
```

Creates a new pushback reader with a pushback buffer of the given size.

<br />

| Parameters ||
|---|---|
| `in` | `Reader`: The reader from which characters will be read <br /> |
| `size` | `int`: The size of the pushback buffer <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `size <= 0` |

## 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(), unread(), ready(), or skip() invocations will throw an IOException. Closing a previously closed stream has no effect. This method will block while there is another thread blocking on the reader.

<br />

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

### 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. The `mark` for class `PushbackReader` always throws an exception.

<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` | Always, since mark is not supported |

### 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, which it does not.

<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, 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 writing 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. The `reset` method of `PushbackReader` always throws an exception.

<br />

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | Always, since reset is not supported |

### skip

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

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

Skips characters. This method will block until some characters are available, an I/O error occurs, or the end of the stream is reached.

<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 |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If `n` is negative. |

### unread

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

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

Pushes back a portion of an array of characters by copying it to the front of the pushback buffer. After this method returns, the next character to be read will have the value `cbuf[off]`, the character after that will have the value `cbuf[off+1]`, and so forth.

<br />

| Parameters ||
|---|---|
| `cbuf` | `char`: Character array <br /> |
| `off` | `int`: Offset of first character to push back <br /> |
| `len` | `int`: Number of characters to push back <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If there is insufficient room in the pushback buffer, or if some other I/O error occurs |

### unread

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

```
public void unread (char[] cbuf)
```

Pushes back an array of characters by copying it to the front of the pushback buffer. After this method returns, the next character to be read will have the value `cbuf[0]`, the character after that will have the value `cbuf[1]`, and so forth.

<br />

| Parameters ||
|---|---|
| `cbuf` | `char`: Character array to push back <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If there is insufficient room in the pushback buffer, or if some other I/O error occurs |

### unread

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

```
public void unread (int c)
```

Pushes back a single character by copying it to the front of the pushback buffer. After this method returns, the next character to be read will have the value `(char)c`.

<br />

| Parameters ||
|---|---|
| `c` | `int`: The int value representing a character to be pushed back <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If the pushback buffer is full, or if some other I/O error occurs |