java.io.PushbackInputStream
PushbackInputStream is a filter class which allows bytes read to be pushed
back into the stream so that they can be reread. Parsers may find this
useful. There is a progammable limit to the number of bytes which may be
pushed back. If the buffer of pushed back bytes is empty, bytes are read from
the source input stream.
Summary
Fields
protected |
|
|
byte[] |
buf |
The byte array containing the bytes to read. |
protected |
|
|
int |
pos |
The current position within the byte array buf . |
Public Constructors
Public Methods
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
Details
Fields
protected
byte[]
buf
The byte
array containing the bytes to read.
protected
int
pos
The current position within the byte array buf
. A value
equal to buf.length indicates no bytes available. A value of 0 indicates
the buffer is full.
Public Constructors
public
PushbackInputStream(InputStream in)
Constructs a new PushbackInputStream on the InputStream
in
.
The size of the pushback buffer is set to the default, or 1 byte.
Parameters
in
| the InputStream to allow pushback operations on.
|
public
PushbackInputStream(InputStream in, int size)
Constructs a new PushbackInputStream on the InputStream
in
.
The size of the pushback buffer is set to
size
.
Parameters
in
| the InputStream to allow pushback operations on. |
size
| the size of the pushback buffer (size>=0 ).
|
Public Methods
public
int
available()
Returns a int representing then number of bytes that are available before
this PushbackInputStream will block. This method returns the number of
bytes available in the pushback buffer plus those available in the target
stream.
Returns
- int the number of bytes available before blocking.
public
void
close()
Close this PushbackInputStream. This implementation closes the target
stream.
Throws
IOException
| If an error occurs attempting to close this stream.
|
public
void
mark(int readlimit)
Make a mark of the current position in the stream but the mark method
does nothing.
Parameters
readlimit
| the maximum number of bytes that are able to be read before
the mark becomes invalid
|
public
boolean
markSupported()
Returns a boolean indicating whether or not this PushbackInputStream
supports mark() and reset(). This implementation always returns false
since PushbackInputStreams do not support mark/reset.
Returns
- boolean indicates whether or not mark() and reset() are
supported.
public
int
read(byte[] buffer, int offset, int length)
Reads at most
length
bytes from this PushbackInputStream
and stores them in byte array
buffer
starting at
offset
. Answer the number of bytes actually read or -1 if
no bytes were read and end of stream was encountered. This implementation
reads bytes from the pushback buffer first, then the target stream if
more bytes are required to satisfy
count
.
Parameters
buffer
| the byte array in which to store the read bytes. |
offset
| the offset in buffer to store the read bytes. |
length
| the maximum number of bytes to store in buffer . |
Returns
- the number of bytes actually read or -1 if end of stream.
public
int
read()
Reads a single byte from this PushbackInputStream and returns the result
as an int. The low-order byte is returned or -1 of the end of stream was
encountered. If the pushback buffer does not contain any available bytes
then a byte from the target input stream is returned.
Returns
- int The byte read or -1 if end of stream.
public
void
reset()
Reset current position to the mark made previously int the stream, but
the reset method will throw IOException and do nothing else if called.
public
long
skip(long count)
Skips
count
number of bytes in this PushbackInputStream.
Subsequent
read()
's will not return these bytes unless
reset()
is used. This implementation skips
count
number of bytes in the buffer and/or the target
stream.
Parameters
count
| the number of bytes to skip. |
Returns
- the number of bytes actually skipped.
Throws
IOException
| If the stream is already closed or another IOException
occurs.
|
public
void
unread(byte[] buffer)
Push back all the bytes in
buffer
. The bytes are pushed
so that they would be read back buffer[0], buffer[1], etc. If the push
back buffer cannot handle the entire contents of
buffer
,
an IOException will be thrown. Some of the buffer may already be in the
buffer after the exception is thrown.
Parameters
buffer
| the byte array containing bytes to push back into the stream. |
Throws
IOException
| If the pushback buffer becomes, or is, full.
|
public
void
unread(byte[] buffer, int offset, int length)
Push back
length
number of bytes in
buffer
starting at
offset
. The bytes are pushed so that they
would be read back buffer[offset], buffer[offset+1], etc. If the push
back buffer cannot handle the bytes copied from
buffer
,
an IOException will be thrown. Some of the bytes may already be in the
buffer after the exception is thrown.
Parameters
buffer
| the byte array containing bytes to push back into the stream. |
offset
| the location to start taking bytes to push back. |
length
| the number of bytes to push back. |
Throws
IOException
| If the pushback buffer becomes, or is, full.
|
public
void
unread(int oneByte)
Push back one
byte
. Takes the byte
oneByte
and puts in in the local buffer of bytes to read back before accessing
the target input stream.
Parameters
oneByte
| the byte to push back into the stream. |