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.
<p> Note that while some implementations of {@code 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.
<p> A subclass' implementation of this method may choose to throw an
{@link IOException} if this input stream has been closed by
invoking the {@link #close()} method.
<p> The {@code available} method for class {@code InputStream} always
returns {@code 0}.
<p> This method should be overridden by subclasses.
@return an estimate of the number of bytes that can be read (or skipped
over) from this input stream without blocking or {@code 0} when
it reaches the end of the input stream.
@exception IOException if an I/O error occurs.
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.
<p> Note that while some implementations of {@code 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.
<p> A subclass' implementation of this method may choose to throw an {@link IOException} if this input stream has been closed by invoking the {@link #close()} method.
<p> The {@code available} method for class {@code InputStream} always returns {@code 0}.
<p> This method should be overridden by subclasses.
@return an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking or {@code 0} when it reaches the end of the input stream. @exception IOException if an I/O error occurs.