PushbackInputStream

Constructors

this
this(InputStream inputStream, int size)

Creates a <code>PushbackInputStream</code> with a pushback buffer of the specified <code>size</code>, and saves its argument, the input stream <code>inputStream</code>, for later use. Initially, the pushback buffer is empty.

this
this(InputStream inputStream)

Creates a <code>PushbackInputStream</code> with a 1-byte pushback buffer, and saves its argument, the input stream <code>inputStream</code>, for later use. Initially, the pushback buffer is empty.

Members

Functions

available
int available()

Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next invocation of a method for this input stream. The next invocation might be the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes.

close
void close()

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

mark
void mark(int readlimit)

Marks the current position inputStream this input stream.

markSupported
bool markSupported()

Tests if this input stream supports the <code>mark</code> and <code>reset</code> methods, which it does not.

read
int read()

Reads the next byte of data from this input stream. The value byte is returned as an <code>int</code> inputStream the range <code>0</code> to <code>255</code>. If no byte is available because the end of the stream has been reached, the value <code>-1</code> is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

read
int read(byte[] b, int off, int len)

Reads up to <code>len</code> bytes of data from this input stream into an array of bytes. This method first reads any pushed-back bytes; after that, if fewer than <code>len</code> bytes have been read then it reads from the underlying input stream. If <code>len</code> is not zero, the method blocks until at least 1 byte of input is available; otherwise, no bytes are read and <code>0</code> is returned.

reset
void reset()

Repositions this stream to the position at the time the <code>mark</code> method was last called on this input stream.

skip
long skip(long n)

Skips over and discards <code>n</code> bytes of data from this input stream. The <code>skip</code> method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly zero. If <code>n</code> is negative, no bytes are skipped.

unread
void unread(int b)

Pushes back a byte by copying it to the front of the pushback buffer. After this method returns, the next byte to be read will have the value <code>(byte)b</code>.

unread
void unread(byte[] b, int off, int len)

Pushes back a portion of an array of bytes by copying it to the front of the pushback buffer. After this method returns, the next byte to be read will have the value <code>boff</code>, the byte after that will have the value <code>b[off+1]</code>, and so forth.

unread
void unread(byte[] b)

Pushes back an array of bytes by copying it to the front of the pushback buffer. After this method returns, the next byte to be read will have the value <code>b[0]</code>, the byte after that will have the value <code>b[1]</code>, and so forth.

Variables

buf
byte[] buf;

The pushback buffer.

pos
int pos;

The position within the pushback buffer from which the next byte will be read. When the buffer is empty, <code>pos</code> is equal to <code>buf.length</code>; when the buffer is full, <code>pos</code> is equal to zero.

Inherited Members

From FilterInputStream

inputStream
InputStream inputStream;

The input stream to be filtered.

read
int read()

Reads the next byte of data from this input stream. The value byte is returned as an <code>int</code> in the range <code>0</code> to <code>255</code>. If no byte is available because the end of the stream has been reached, the value <code>-1</code> is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown. <p> This method simply performs <code>inputStream.read()</code> and returns the result.

read
int read(byte[] b)

Reads up to <code>b.length</code> bytes of data from this input stream into an array of bytes. This method blocks until some input is available. <p> This method simply performs the call <code>read(b, 0, b.length)</code> and returns the result. It is important that it does <i>not</i> do <code>inputStream.read(b)</code> instead; certain subclasses of <code>FilterInputStream</code> depend on the implementation strategy actually used.

read
int read(byte[] b, int off, int len)

Reads up to <code>len</code> bytes of data from this input stream into an array of bytes. If <code>len</code> is not zero, the method blocks until some input is available; otherwise, no bytes are read and <code>0</code> is returned. <p> This method simply performs <code>inputStream.read(b, off, len)</code> and returns the result.

skip
long skip(long n)

Skips over and discards <code>n</code> bytes of data from the input stream. The <code>skip</code> method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly <code>0</code>. The actual number of bytes skipped is returned. <p> This method simply performs <code>inputStream.skip(n)</code>.

available
int available()

Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream. The next caller might be the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes. <p> This method returns the result of {@link #inputStream inputStream}.available().

close
void close()

Closes this input stream and releases any system resources associated with the stream. This method simply performs <code>inputStream.close()</code>.

mark
void mark(int readlimit)

Marks the current position in this input stream. A subsequent call to the <code>reset</code> method repositions this stream at the last marked position so that subsequent reads re-read the same bytes. <p> The <code>readlimit</code> argument tells this input stream to allow that many bytes to be read before the mark position gets invalidated. <p> This method simply performs <code>inputStream.mark(readlimit)</code>.

reset
void reset()

Repositions this stream to the position at the time the <code>mark</code> method was last called on this input stream. <p> This method simply performs <code>inputStream.reset()</code>. <p> Stream marks are intended to be used in situations where you need to read ahead a little to see what's in the stream. Often this is most easily done by invoking some general parser. If the stream is of the type handled by the parse, it just chugs along happily. If the stream is not of that type, the parser should toss an exception when it fails. If this happens within readlimit bytes, it allows the outer code to reset the stream and try another parser.

markSupported
bool markSupported()

Tests if this input stream supports the <code>mark</code> and <code>reset</code> methods. This method simply performs <code>inputStream.markSupported()</code>.

Meta