| Character-stream class
     | Description
     | Corresponding byte class | 
Reader | 
    Abstract class for character-input streams | 
    InputStream | 
    BufferedReader | 
    Buffers input, parses lines | 
    BufferedInputStream | 
        LineNumberReader     | 
    Keeps track of line numbers | 
    LineNumberInputStream | 
    CharArrayReader | 
    Reads from a character array | 
     | 
    InputStreamReader | 
    Translates a byte stream into a character stream | 
    (none) | 
        FileReader | 
    Translates bytes from a file into a character stream     | 
    FileInputStream | 
    FilterReader | 
    Abstract class for filtered character input | 
    FilterInputStream | 
        PushbackReader | 
    Allows characters to be pushed back | 
    PushbackInputStream | 
    PipedReader | 
    Reads from a PipedWriter | 
    PipedInputStream | 
    StringReader | 
    Reads from a String | 
    StringBufferInputStream | 
|   | 
Writer | 
    Abstract class for character-output streams | 
    OutputStream | 
    BufferedWriter | 
    Buffers output, uses platform's line separator | 
    BufferedOutputStream | 
    CharArrayWriter | 
    Writes to a character array | 
    ByteArrayOutputStream | 
    FilterWriter | 
    Abstract class for filtered character output | 
    FilterOutputStream | 
    OutputStreamWriter | 
    Translates a character stream into a byte stream | 
    (none) | 
        FileWriter | 
    Translates a character stream into a byte file | 
    FileOutputStream | 
    PrintWriter | 
    Prints values and objects to a Writer | 
    PrintStream | 
    PipedWriter | 
    Writes to a PipedReader | 
    PipedOutputStream | 
    StringWriter | 
    Writes to a String | 
    (none) |