🚀 Buffered I/O Classes in Java
🔹 1. BufferedInputStream
- Extends:
FilterInputStream - Buffers: Raw byte input
- Used with:
InputStream
InputStream in = new BufferedInputStream(new FileInputStream("file.bin"));
🔹 2. BufferedOutputStream
- Extends:
FilterOutputStream - Buffers: Raw byte output
- Used with:
OutputStream
OutputStream out = new BufferedOutputStream(new FileOutputStream("file.bin"));
🔹 3. BufferedReader
- Extends:
Reader - Buffers: Character input
- Adds:
readLine()method (super useful!)
Reader reader = new BufferedReader(new FileReader("file.txt"));
🔹 4. BufferedWriter
- Extends:
Writer - Buffers: Character output
Writer writer = new BufferedWriter(new FileWriter("file.txt"));
🧠 Why buffering helps
Without buffering:
- Every
read()orwrite()hits the disk or network — very slow.
With buffering:
- Data is read/written in large chunks behind the scenes.
- Fewer system calls = faster and more efficient I/O.
⚙️ Diagram: Buffering Workflow
Raw File ←→ InputStream ←→ BufferedInputStream ←→ your app
Plain Text File ←→ FileReader ←→ BufferedReader ←→ your app
✅ Summary Table
| Class | For | Data Type | Buffering Type | Extra Features |
|---|---|---|---|---|
BufferedInputStream | Reading | byte | Input buffer | N/A |
BufferedOutputStream | Writing | byte | Output buffer | N/A |
BufferedReader | Reading | char | Input buffer | readLine() |
BufferedWriter | Writing | char | Output buffer | newLine() |