There are 2 types of IO stream
1. Byte streams that are subclasses of InputStream or OutputStream
2. Character streams that are subclasses of Reader and Writer
InputStream/OutputStream and Reader/Writer are abstract class
Their class hierarchy is show:
-- Constructor functions --
FileInputStream(File file)
FileInputStream(FileDescriptor fdObj)
FileInputStream(String name)
FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.
-- Constructor functions --
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)
-- Constructor functions --
BufferedReader(Reader in)
BufferedReader(Reader in, int sz)
-- Constructor functions --
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, Charset cs)
InputStreamReader(InputStream in, CharsetDecoder dec)
InputStreamReader(InputStream in, String charsetName)
An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset. The charset that it uses may be specified by name or may be given explicitly, or the platform's default charset may be accepted.
-- Constructor functions --
FileReader(File file)
FileReader(FileDescriptor fd)
FileReader(String fileName)