Chapter 3. Input Streams
java.io.InputStream
is the abstract superclass for all input streams. It declares the three basic methods needed to read bytes of data from a stream. It also has methods for closing streams, checking how many bytes of data are available to be read, skipping over input, marking a position in a stream and resetting back to that position, and determining whether marking and resetting are supported.
The read( ) Method
The fundamental method of the InputStream
class is read( )
. This method reads a single unsigned byte of data and returns the integer value of the unsigned byte. This is a number between 0 and 255:
public abstract int read( ) throws IOException
read( )
is declared abstract; therefore, InputStream
is abstract. Hence, you can never instantiate an InputStream
directly; you always work with one of its concrete subclasses.
The following code reads 10 bytes from the System.in
input stream and stores them in the int
array data
:
int[] data = new int[10]; for (int i = 0; i < data.length; i++) { data[i] = System.in.read( ); }
Notice that although read( )
is reading a byte
, it returns an int
. If you want to store the raw bytes instead, you can cast the int
to a byte
. For example:
byte[] b = new byte[10]; for (int i = 0; i < b.length; i++) { b[i] = (byte) System.in.read( ); }
Of course, this produces a signed byte instead of the unsigned byte returned by the read( )
method (that is, a byte in the range −128 to 127 instead of 0 to 255). As long as you’re clear in ...
Get Java I/O, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.