Lesson 27 of 36Article18 min
FileInputStream, FileOutputStream, BufferedReader & BufferedWriter
Streams read/write raw bytes — good for images, PDFs, binary files.
FileInputStream & FileOutputStream — byte streams
Streams read/write raw bytes — good for images, PDFs, binary files.
FileInputStream reads; FileOutputStream writes. Always close or use try-with-resources.
Real-life example: Byte stream is a pipe carrying water drops (bytes) — works for any liquid, not just text.
Byte streams
import java.io.*;
try (FileOutputStream out = new FileOutputStream("out.bin")) {
out.write(65); // byte 'A'
}
try (FileInputStream in = new FileInputStream("out.bin")) {
System.out.println(in.read()); // 65
}BufferedReader & BufferedWriter — text lines
Wrap streams for efficient text: BufferedReader reads line by line. BufferedWriter writes with buffer.
Use InputStreamReader to bridge bytes to chars: new BufferedReader(new FileReader("file.txt")).
Real-life example: BufferedReader is reading a book line by line instead of one letter at a time — faster and easier.
Buffered text I/O
import java.io.*;
try (BufferedWriter bw = new BufferedWriter(new FileWriter("log.txt"))) {
bw.write("Line 1");
bw.newLine();
bw.write("Line 2");
}
try (BufferedReader br = new BufferedReader(new FileReader("log.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}