public class PushbackReader extends FilterReader
Reader and adds functionality to "push back"
characters that have been read, so that they can be read again. Parsers may
find this useful. The number of characters which may be pushed back can be
specified during construction. If the buffer of pushed back bytes is empty,
characters are read from the underlying reader.in| Constructor and Description |
|---|
PushbackReader(Reader in)
Constructs a new
PushbackReader with the specified reader as
source. |
PushbackReader(Reader in,
int size)
Constructs a new
PushbackReader with in as source reader. |
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Closes this reader.
|
void |
mark(int readAheadLimit)
Marks the current position in this stream.
|
boolean |
markSupported()
Indicates whether this reader supports the
mark(int) and
reset() methods. |
int |
read()
Reads a single character from this reader and returns it as an integer
with the two higher-order bytes set to 0.
|
int |
read(char[] buffer,
int offset,
int count)
Reads up to
count characters from this reader and stores them in
character array buffer starting at offset. |
boolean |
ready()
Indicates whether this reader is ready to be read without blocking.
|
void |
reset()
Resets this reader to the last marked position.
|
long |
skip(long charCount)
Skips
charCount characters in this reader. |
void |
unread(char[] buffer)
Pushes all the characters in
buffer back to this reader. |
void |
unread(char[] buffer,
int offset,
int length)
Pushes a subset of the characters in
buffer back to this reader. |
void |
unread(int oneChar)
Pushes the specified character
oneChar back to this reader. |
nullReader, read, read, transferTopublic PushbackReader(Reader in)
PushbackReader with the specified reader as
source. The size of the pushback buffer is set to the default value of 1
character.in - the source reader.public PushbackReader(Reader in, int size)
PushbackReader with in as source reader.
The size of the pushback buffer is set to size.in - the source reader.size - the size of the pushback buffer.IllegalArgumentException - if size is negative.public void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableclose in class FilterReaderIOException - if an error occurs while closing this reader.public void mark(int readAheadLimit)
throws IOException
IOException.mark in class FilterReaderreadAheadLimit - the number of character that can be read from this reader
before the mark is invalidated; this parameter is ignored.IOException - if this method is called.FilterReader.markSupported(),
FilterReader.reset()public boolean markSupported()
mark(int) and
reset() methods. PushbackReader does not support them, so
it returns false.markSupported in class FilterReaderfalse.mark(int),
reset()public int read()
throws IOException
read in class FilterReaderIOException - if this reader is closed or an I/O error occurs while reading
from this reader.public int read(char[] buffer,
int offset,
int count)
throws IOException
count characters from this reader and stores them in
character array buffer starting at offset. Characters are
read from the pushback buffer first, then from the source reader if more
bytes are required. Blocks until count characters have been read,
the end of the source reader is detected or an exception is thrown.
Returns the number of bytes read or -1 if the end of the source reader has been reached.read in class FilterReaderIndexOutOfBoundsException - if offset < 0 || count < 0 || offset + count > buffer.length.IOException - if this reader is closed or another I/O error occurs while
reading from this reader.public boolean ready()
throws IOException
true if this reader will not block when read is
called, false if unknown or blocking will occur.ready in class FilterReadertrue if the receiver will not block when
read() is called, false if unknown
or blocking will occur.IOException - if this reader is closed or some other I/O error occurs.read(),
read(char[], int, int)public void reset()
throws IOException
IOException.reset in class FilterReaderIOException - if this method is called.FilterReader.mark(int),
FilterReader.markSupported()public void unread(char[] buffer)
throws IOException
buffer back to this reader. The
characters are pushed back in such a way that the next character read
from this reader is buffer[0], then buffer[1] and so on.
If this reader's internal pushback buffer cannot store the entire
contents of buffer, an IOException is thrown. Parts of
buffer may have already been copied to the pushback buffer when
the exception is thrown.
buffer - the buffer containing the characters to push back to this
reader.IOException - if this reader is closed or the free space in the internal
pushback buffer is not sufficient to store the contents of
buffer.public void unread(char[] buffer,
int offset,
int length)
throws IOException
buffer back to this reader.
The subset is defined by the start position offset within
buffer and the number of characters specified by length.
The bytes are pushed back in such a way that the next byte read from this
stream is buffer[offset], then buffer[1] and so on.
If this stream's internal pushback buffer cannot store the selected
subset of buffer, an IOException is thrown. Parts of
buffer may have already been copied to the pushback buffer when
the exception is thrown.
buffer - the buffer containing the characters to push back to this
reader.offset - the index of the first byte in buffer to push back.length - the number of bytes to push back.IndexOutOfBoundsException - if offset < 0 or count < 0, or if
offset + count is greater than the length of
buffer.IOException - if this reader is closed or the free space in the internal
pushback buffer is not sufficient to store the selected
contents of buffer.NullPointerException - if buffer is null.public void unread(int oneChar)
throws IOException
oneChar back to this reader. This
is done in such a way that the next character read from this reader is
(char) oneChar.
If this reader's internal pushback buffer cannot store the character, an
IOException is thrown.
oneChar - the character to push back to this stream.IOException - if this reader is closed or the internal pushback buffer is
full.public long skip(long charCount)
throws IOException
charCount characters in this reader. This implementation skips
characters in the pushback buffer first and then in the source reader if
necessary.skip in class FilterReaderIllegalArgumentException - if charCount < 0.IOException - if this reader is closed or another I/O error occurs.FilterReader.mark(int),
FilterReader.markSupported(),
FilterReader.reset()