Java.Streams.What subclasses of the Reader class do you know, what are they for?

The Reader class is part of Java’s character-based I/O system, introduced to handle text data (as opposed to InputStream which handles raw bytes). Let’s go over the key subclasses and their purposes.


📘 Reader Overview

  • Reader is an abstract class in java.io for reading streams of characters.
  • It is part of the character I/O hierarchy, introduced to work with Unicode text in a more natural way than byte streams.

🔽 Common Subclasses of Reader

SubclassDescription
BufferedReaderBuffers characters for efficient reading, supports readLine().
InputStreamReaderConverts bytes from an InputStream into characters using a charset.
FileReaderA convenience subclass of InputStreamReader for reading from files (uses default charset).
CharArrayReaderReads characters from a character array.
StringReaderReads characters from a String.
PipedReaderUsed with PipedWriter for inter-thread communication.
FilterReaderAbstract class for decorating Reader objects, base for custom filtering.
PushbackReaderAllows one character to be “pushed back” (unread), useful for parsers.

✅ Quick Examples

1. BufferedReader

BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}
reader.close();

2. InputStreamReader

InputStreamReader reader = new InputStreamReader(new FileInputStream("file.txt"), "UTF-8");
int ch;
while ((ch = reader.read()) != -1) {
    System.out.print((char) ch);
}
reader.close();

3. CharArrayReader

char[] chars = {'J', 'a', 'v', 'a'};
CharArrayReader reader = new CharArrayReader(chars);
int c;
while ((c = reader.read()) != -1) {
    System.out.print((char) c);
}
reader.close();

4. StringReader

StringReader reader = new StringReader("Hello Reader");
int ch;
while ((ch = reader.read()) != -1) {
    System.out.print((char) ch);
}
reader.close();

5. PushbackReader

PushbackReader reader = new PushbackReader(new StringReader("abc"));
int c = reader.read();
if (c != 'a') {
    reader.unread(c);
}
// Continue processing
reader.close();

🧵 Summary Table

Reader SubclassPurpose
BufferedReaderEfficient reading, supports readLine()
InputStreamReaderBridge from byte to character streams
FileReaderReads characters from files
CharArrayReaderReads from a character array
StringReaderReads from a string
PipedReaderInter-thread communication
FilterReaderDecorator base class
PushbackReaderAllows unread of characters (parser use)
This entry was posted in Без рубрики. Bookmark the permalink.

Leave a Reply

Your email address will not be published.