public abstract class NonBlockingInputStream extends InputStream
InputStream extension that defines contract for non-blocking
 streaming read operations.| Modifier and Type | Field and Description | 
|---|---|
static int | 
NOTHING
Constant used as a return value from  
tryRead() method, to indicate that nothing
 has been read. | 
| Constructor and Description | 
|---|
NonBlockingInputStream()  | 
| 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. 
 | 
abstract int | 
tryRead()
Behaves mostly like  
InputStream.read(). | 
abstract int | 
tryRead(byte[] b)
Behaves mostly like  
InputStream.read(byte[]). | 
abstract int | 
tryRead(byte[] b,
       int off,
       int len)
Behaves mostly like  
InputStream.read(byte[], int, int). | 
close, mark, markSupported, read, read, read, reset, skippublic static final int NOTHING
tryRead() method, to indicate that nothing
 has been read.public int available()
              throws IOException
 Note that while some implementations of InputStream will return
 the total number of bytes in the stream, many will not. It is
 never correct to use the return value of this method to allocate
 a buffer intended to hold all data in this stream.
 
 A subclass' implementation of this method may choose to throw an
 IOException if this input stream has been closed by
 invoking the InputStream.close() method.
 
 The default implementation of this method in NonBlockingInputStream
 throws an UnsupportedOperationException. This method must be overridden
 by subclasses. The overriding implementations must guarantee non-blocking behavior
 of the method. The overriding implementation must also guarantee that a non-empty
 stream does not return zero from the method. IOW, it must be possible to use the
 method for empty check: stream.available() == 0
 
available in class InputStream0 when
         it reaches the end of the input stream or the stream is empty.IOException - if an I/O error occurs.public abstract int tryRead()
                     throws IOException
InputStream.read().
 The main difference is that this method is non-blocking. In case there are no
 data available to be read, the method returns NOTHING immediately.-1 if end of the stream has been reached or
         NOTHING in case no data are available to be read at the moment.IOException - if an I/O error occurs.public abstract int tryRead(byte[] b)
                     throws IOException
InputStream.read(byte[]).
 The main difference is that this method is non-blocking. In case there are no
 data available to be read, the method returns zero immediately.b - the buffer into which the data is read.-1 if end of the
         stream has been reached or 0 in case no data are available to be
         read at the moment.IOException - if an I/O error occurs.public abstract int tryRead(byte[] b,
                            int off,
                            int len)
                     throws IOException
InputStream.read(byte[], int, int).
 The main difference is that this method is non-blocking. In case there are no
 data available to be read, the method returns zero immediately.b - the buffer into which the data is read.off - the start offset in array b
            at which the data is written.len - the maximum number of bytes to read.-1 if end of the
         stream has been reached or 0 in case no data are available to be
         read at the moment.IOException - if an I/O error occurs.Copyright © 2007-2024, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.