🚀 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() |