Interview question
What are BufferedReader and BufferedWriter? Why use them instead of plain readers? BufferedReader और BufferedWriter क्या हैं? Plain readers के बजाय कब use करें?
Answer
BufferedReader and BufferedWriter provide buffering on top of character streams. They read/write data in chunks (buffer), which is much faster than reading character-by-character.
import java.io.*;
public class BufferedIODemo {
public static void main(String[] args) {
// Writing with BufferedWriter (faster)
try (BufferedWriter bw = new BufferedWriter(
new FileWriter('data.txt'))) {
bw.write('Line 1: First line');
bw.newLine();
bw.write('Line 2: Second line');
bw.newLine();
bw.write('Line 3: Third line');
bw.flush(); // Force write to disk
} catch (IOException e) {
e.printStackTrace();
}
// Reading with BufferedReader (faster)
try (BufferedReader br = new BufferedReader(
new FileReader('data.txt'))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
// Performance Comparison
// FileReader: Reads 1 character at a time
// BufferedReader: Reads buffer (8192 chars) at a time
// Result: BufferedReader is 100x+ faster for large files
// Common BufferedReader methods
BufferedReader br = new BufferedReader(new FileReader('file.txt'));
String line = br.readLine(); // Read one line
int character = br.read(); // Read one character
char[] buffer = new char[1024];
int charsRead = br.read(buffer); // Read into buffer
br.close();
// Common BufferedWriter methods
BufferedWriter bw = new BufferedWriter(new FileWriter('file.txt'));
bw.write('Text'); // Write string
bw.write('A'); // Write character
bw.newLine(); // Write newline
bw.flush(); // Flush buffer to disk
bw.close();BufferedReader/BufferedWriter:
Writing:
try (BufferedWriter bw = new BufferedWriter(
new FileWriter('file.txt'))) {
bw.write('Line');
bw.newLine();
bw.flush();
}
Reading:
try (BufferedReader br = new BufferedReader(
new FileReader('file.txt'))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
Performance: 100x+ faster for large files
Why: Buffering - reads/writes in chunksWas this answer clear?