ByteArrayInputStream/ByteArrayOutputStream: read data from/to byte arrays
InputStreamReader/OutputStreamWriter: bridge from byte streams to character streams
PipedInputStream/OutputPiepedStream: used to read from or write to a piped stream, a particular type of stream on which the output of OutputPiepedStream is read by PipedInputStream
The main character streams are:
Reader/Writer: abstract class for chars
BufferedReader/BufferedWriter: the data is buffered so that it's possible to read line by line.
StringReader/StringWriter: read or write from/to a string
FileReader/FileWriter: basic interface for chars
PrintWriter: similar to FileWriter but more sophisticated.
PipedReader/PipedWriter: used to read from or write to a piped stream