Are you aware you can look at the source code? The docs sum it up; for general stream info you'll have to jump into native code. Perhaps you could look at how files are handled in an open-source C library.
Streams attach data to objects. Data flows in streams. An input data stream is needed to connect
data from the keyboard to your program. The connection to the keyboard is System.in. An output
data stream is needed to send data to from your program to the computer screen
A stream is just that - a stream (or sequence) of bytes. Although files can be access randomly (in Java using RandomAccessFile), FileInputStream still gives you a stream - byte 1 first, then byte 2, etc.