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.
@param b the buffer into which the data is read.
@param off the start offset in the destination array <code>b</code>
@param len the maximum number of bytes read.
@return the total number of bytes read into the buffer, or
<code>-1</code> if there is no more data because the end of
the file has been reached.
@exception NullPointerException If <code>b</code> is <code>null</code>.
@exception IndexOutOfBoundsException If <code>off</code> is negative,
<code>len</code> is negative, or <code>len</code> is greater than
<code>b.length - off</code>
@exception IOException if an I/O error occurs.
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.
@param b the buffer into which the data is read. @param off the start offset in the destination array <code>b</code> @param len the maximum number of bytes read. @return the total number of bytes read into the buffer, or <code>-1</code> if there is no more data because the end of the file has been reached. @exception NullPointerException If <code>b</code> is <code>null</code>. @exception IndexOutOfBoundsException If <code>off</code> is negative, <code>len</code> is negative, or <code>len</code> is greater than <code>b.length - off</code> @exception IOException if an I/O error occurs.