InputStream.read

Reads up to <code>len</code> bytes of data from the input stream into an array of bytes. An attempt is made to read as many as <code>len</code> bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.

<p> This method blocks until input data is available, end of file is detected, or an exception is thrown.

<p> If <code>len</code> is zero, then no bytes are read and <code>0</code> is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value <code>-1</code> is returned; otherwise, at least one byte is read and stored into <code>b</code>.

<p> The first byte read is stored into element <code>boff</code>, the next one into <code>b[off+1]</code>, and so on. The number of bytes read is, at most, equal to <code>len</code>. Let <i>k</i> be the number of bytes actually read; these bytes will be stored in elements <code>boff</code> through <code>b[off+</code><i>k</i><code>-1]</code>, leaving elements <code>b[off+</code><i>k</i><code>]</code> through <code>b[off+len-1]</code> unaffected.

<p> In every case, elements <code>b[0]</code> through <code>boff</code> and elements <code>b[off+len]</code> through <code>b[b.length-1]</code> are unaffected.

<p> The <code>read(b,</code> <code>off,</code> <code>len)</code> method for class <code>InputStream</code> simply calls the method <code>read()</code> repeatedly. If the first such call results in an <code>IOException</code>, that exception is returned from the call to the <code>read(b,</code> <code>off,</code> <code>len)</code> method. If any subsequent call to <code>read()</code> results in a <code>IOException</code>, the exception is caught and treated as if it were end of file; the bytes read up to that point are stored into <code>b</code> and the number of bytes read before the exception occurred is returned. The default implementation of this method blocks until the requested amount of input data <code>len</code> has been read, end of file is detected, or an exception is thrown. Subclasses are encouraged to provide a more efficient implementation of this method.

@param b the buffer into which the data is read. @param off the start offset in array <code>b</code> at which the data is written. @param len the maximum number of bytes to 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 stream has been reached. @exception IOException If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs. @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> @see java.io.InputStream#read()

  1. int read()
  2. int read(byte[] b)
  3. int read(byte[] b, int off, int len)
    class InputStream
    int
    read
    (
    byte[] b
    ,
    int off
    ,
    int len
    )

Meta