public class NonBlockingBufferedInputStream extends WrappedInputStream
BufferedInputStream.| Modifier and Type | Field and Description |
|---|---|
protected byte[] |
m_aBuf
The internal buffer array where the data is stored.
|
protected int |
m_nCount
The index one greater than the index of the last valid byte in the buffer.
|
protected int |
m_nMarkLimit
The maximum read ahead allowed after a call to the
mark method
before subsequent calls to the reset method fail. |
protected int |
m_nMarkPos
The value of the
pos field at the time the last
mark method was called. |
protected int |
m_nPos
The current position in the buffer.
|
in| Constructor and Description |
|---|
NonBlockingBufferedInputStream(InputStream aIS)
Creates a
BufferedInputStream and saves its argument, the
input stream in, for later use. |
NonBlockingBufferedInputStream(InputStream aIS,
int nSize)
Creates a
BufferedInputStream with the specified buffer size,
and saves its argument, the input stream in, for later use. |
| Modifier and Type | Method and Description |
|---|---|
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.
|
void |
close()
Closes this input stream and releases any system resources associated with
the stream.
|
void |
mark(int nReadlimit)
See the general contract of the
mark method of
InputStream. |
boolean |
markSupported()
Tests if this input stream supports the
mark and
reset methods. |
int |
read()
See the general contract of the
read method of
InputStream. |
int |
read(byte[] aBuf,
int nOfs,
int nLen)
Reads bytes from this byte-input stream into the specified byte array,
starting at the given offset.
|
void |
reset()
See the general contract of the
reset method of
InputStream. |
long |
skip(long nBytesToSkip)
See the general contract of the
skip method of
InputStream. |
getWrappedInputStream, toStringreadprotected volatile byte[] m_aBuf
protected int m_nCount
0 through
buf.length; elements buf[0] through
buf[count-1]
contain buffered input data obtained from the underlying input
stream.protected int m_nPos
buf array.
This value is always in the range 0 through count
. If it is less than count, then buf[pos] is the
next byte to be supplied as input; if it is equal to count,
then the next read or skip operation will require
more bytes to be read from the contained input stream.
m_aBufprotected int m_nMarkPos
pos field at the time the last
mark method was called.
This value is always in the range -1 through pos.
If there is no marked position in the input stream, this field is
-1. If there is a marked position in the input stream, then
buf[markpos] is the first byte to be supplied as input after a
reset operation. If markpos is not
-1, then all bytes from positions buf[markpos]
through buf[pos-1] must remain in the buffer array (though
they may be moved to another place in the buffer array, with suitable
adjustments to the values of count, pos, and
markpos); they may not be discarded unless and until the
difference between pos and markpos exceeds
marklimit.
protected int m_nMarkLimit
mark method
before subsequent calls to the reset method fail. Whenever the
difference between pos and markpos exceeds
marklimit, then the mark may be dropped by setting
markpos to -1.public NonBlockingBufferedInputStream(@Nonnull InputStream aIS)
BufferedInputStream and saves its argument, the
input stream in, for later use. An internal buffer array is
created and stored in buf.aIS - the underlying input stream.public NonBlockingBufferedInputStream(@Nonnull InputStream aIS, @Nonnegative int nSize)
BufferedInputStream with the specified buffer size,
and saves its argument, the input stream in, for later use. An
internal buffer array of length size is created and stored in
buf.aIS - the underlying input stream.nSize - the buffer size.IllegalArgumentException - if size ≤ 0.public int read()
throws IOException
read method of
InputStream.read in class FilterInputStream-1 if the end of the stream
is reached.IOException - if this input stream has been closed by invoking its
close() method, or an I/O error occurs.public int read(byte[] aBuf,
int nOfs,
int nLen)
throws IOException
This method implements the general contract of the corresponding
method of the
read class. As an additional convenience, it
attempts to read as many bytes as possible by repeatedly invoking the
InputStreamread method of the underlying stream. This iterated
read continues until one of the following conditions becomes
true:
read method of the underlying stream returns
-1, indicating end-of-file, or
available method of the underlying stream returns
zero, indicating that further input requests would block.
read on the underlying stream returns
-1 to indicate end-of-file then this method returns
-1. Otherwise this method returns the number of bytes actually
read.
Subclasses of this class are encouraged, but not required, to attempt to read as many bytes as possible in the same fashion.
read in class FilterInputStreamaBuf - destination buffer.nOfs - offset at which to start storing bytes.nLen - maximum number of bytes to read.-1 if the end of the
stream has been reached.IOException - if this input stream has been closed by invoking its
close() method, or an I/O error occurs.public long skip(long nBytesToSkip)
throws IOException
skip method of
InputStream.skip in class FilterInputStreamIOException - if the stream does not support seek, or if this input stream has
been closed by invoking its close() method, or an I/O
error occurs.public int available()
throws IOException
This method returns the sum of the number of bytes remaining to be read in
the buffer (count - pos) and the result of calling the
in.available().
available in class FilterInputStreamIOException - if this input stream has been closed by invoking its
close() method, or an I/O error occurs.public void mark(int nReadlimit)
mark method of
InputStream.mark in class FilterInputStreamnReadlimit - the maximum limit of bytes that can be read before the mark position
becomes invalid.reset()public void reset()
throws IOException
reset method of
InputStream.
If markpos is -1 (no mark has been set or the
mark has been invalidated), an IOException is thrown.
Otherwise, pos is set equal to markpos.
reset in class FilterInputStreamIOException - if this stream has not been marked or, if the mark has been
invalidated, or the stream has been closed by invoking its
close() method, or an I/O error occurs.mark(int)public boolean markSupported()
mark and
reset methods. The markSupported method of
BufferedInputStream returns true.markSupported in class FilterInputStreamboolean indicating if this stream type supports the
mark and reset methods.InputStream.mark(int),
InputStream.reset()public void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableclose in class FilterInputStreamIOException - if an I/O error occurs.Copyright © 2014–2020 Philip Helger. All rights reserved.