Here is explain&diagram about files stream that exist in java.
A stream can represent many different kinds of sources and destinations, including disk files, devices, other programs, and memory arrays.
Streams support many different kinds of data, including simple bytes, primitive data types, localized characters, and objects. Some streams simply pass on data; others manipulate and transform the data in useful ways.
Reading and Writing Binary Data
InputStream/OutputStream= binary data
FileInputStream/FileOutputStream = file binary data
DataInputStream/DataOutputStream = primitive java types
ObjectOutputStream/ObjectInputStream = Object serialization
Text Input and Output
Reader/Writer = character data
InputStreamReader/OutputStreamWriter = general character reader/writer
FileReader/FileWriter = read/write character files
BufferedReader/BufferedWriter = add buffering
PrintWriter/Scanner = Formatting
Charset = encoding/decoding