Chapter 20. Readers and Writers
You’re probably going to experience a little déjà vu in this chapter. The java.io.Writer
class is modeled on the java.io.OutputStream
class. The java.io.Reader
class is modeled on the java.io.InputStream
class. The names and signatures of the methods of the Reader
and Writer
classes are similar (sometimes identical) to the names and signatures of the methods of the InputStream
and OutputStream
classes. The patterns these classes follow are similar as well. Filtered input and output streams are chained to other streams in their constructors. Filtered readers and writers are chained to other readers and writers in their constructors. InputStream
and OutputStream
are abstract superclasses that identify common functionality in the concrete subclasses. Likewise, Reader
and Writer
are abstract superclasses that identify common functionality in the concrete subclasses. The difference between readers and writers and input and output streams is that streams are fundamentally byte-based while readers and writers are fundamentally character-based. Where an input stream reads a byte, a reader reads a character. Where an output stream writes a byte, a writer writes a character.
While bytes are a more or less universal concept, characters are not. As you learned in the last chapter, the same character can be encoded differently in different character sets, and different character sets include different characters. Characters can even have different sizes in different ...
Get Java I/O, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.