Middle
What pattern is implemented in the chain FileInputStream → BufferedInputStream → InputStreamReader → BufferedReader?
sobes.tech AI
Answer from AI
In the chain FileInputStream → BufferedInputStream → InputStreamReader → BufferedReader, the "Decorator" pattern is implemented. This pattern allows dynamically adding new responsibilities to objects by wrapping them in other wrapper objects.
Here, each class extends the functionality of the previous one:
- FileInputStream — the basic stream for reading bytes from a file.
- BufferedInputStream — adds buffering to improve byte reading performance.
- InputStreamReader — converts a byte stream into a character stream using encoding.
- BufferedReader — adds buffering for efficient reading of characters, lines.
Thus, each subsequent stream wraps the previous one, adding new capabilities without changing the interface. This allows flexible combination of input stream functionalities.
Example:
FileInputStream fis = new FileInputStream("file.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
InputStreamReader isr = new InputStreamReader(bis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
Here, BufferedReader allows reading lines, and BufferedInputStream improves byte reading performance from the file.