BufferedReader is a wrapper class around another Reader class (like FileReader or InputStreamReader) that buffers input to provide efficient reading of characters, arrays, and lines. It improves performance by minimizing the number of I/O operations, especially useful for reading text files line by line.
Commonly Used Constructors and Methods


Simple Program: Read File Line-by-Line Using BufferedReader
Read and print all lines from a file notes.txt using BufferedReader.
import java.io.*;
public class BufferedReaderSimpleDemo {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("notes.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}Problem Statement:
LotusJavaPrince collects user feedback stored in a text file. Mahesh writes a program to read feedback line by line using BufferedReader, counts the number of feedback entries, and prints them.
import java.io.*;
public class FeedbackProcessor {
public static void main(String[] args) {
int feedbackCount = 0;
try (BufferedReader br = new BufferedReader(new FileReader("userFeedback.txt"))) {
String feedback;
System.out.println("User Feedbacks:");
System.out.println("----------------");
while ((feedback = br.readLine()) != null) {
System.out.println(feedback);
feedbackCount++;
}
System.out.println("----------------");
System.out.println("Total feedback entries: " + feedbackCount);
} catch (IOException e) {
System.out.println("Error reading feedback file.");
e.printStackTrace();
}
}
}
Assuming the file userFeedback.txt contains:
Great application, very user-friendly.
Please add dark mode.
Encountered some bugs on login.
Excellent customer support.
Console Output:
User Feedbacks:
----------------
Great application, very user-friendly.
Please add dark mode.
Encountered some bugs on login.
Excellent customer support.
----------------
Total feedback entries: 4
The BufferedReader class is an essential tool for efficient reading of character streams in Java. By wrapping around other Reader classes, it buffers input and minimizes expensive I/O operations, making it ideal for reading text data line-by-line or in bulk.
