Java BufferedReader
Efficient text reading with buffering capabilities
📚 What is BufferedReader?
BufferedReader reads text efficiently by buffering characters in memory. It's perfect for reading large text files line by line with better performance than basic readers.
// Basic BufferedReader example
import java.io.*;
BufferedReader br = new BufferedReader(new FileReader("text.txt"));
String line = br.readLine();
br.close();
Result:
Reads first line from 'text.txt'
BufferedReader Features
Line Reading
Read text files line by line
String line = br.readLine();
Buffered I/O
Faster reading with buffer
BufferedReader br = new BufferedReader(reader);
Character Streams
Handle text data efficiently
int character = br.read();
Large Files
Perfect for big text files
while ((line = br.readLine()) != null)
🔹 Basic BufferedReader Usage
Here's how to read a text file using BufferedReader:
import java.io.*;
public class BufferedReaderExample {
public static void main(String[] args) {
try {
// Create BufferedReader
FileReader fr = new FileReader("story.txt");
BufferedReader br = new BufferedReader(fr);
// Read line by line
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
// Close the reader
br.close();
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
Output:
Once upon a time...
There was a Java programmer...
Who loved BufferedReader!
🔹 Try-with-Resources
Modern approach with automatic resource management:
import java.io.*;
public class ModernBufferedReader {
public static void main(String[] args) {
// Automatic resource management
try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
String line;
int lineNumber = 1;
while ((line = br.readLine()) != null) {
System.out.println(lineNumber + ": " + line);
lineNumber++;
}
} catch (FileNotFoundException e) {
System.out.println("File not found!");
} catch (IOException e) {
System.out.println("Reading error: " + e.getMessage());
}
// BufferedReader is automatically closed
}
}
Output:
1: First line of the file
2: Second line of the file
3: Third line of the file
🔹 Reading User Input
BufferedReader can also read from console input:
import java.io.*;
public class ConsoleInput {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
System.out.print("Enter your name: ");
String name = br.readLine();
System.out.print("Enter your age: ");
String ageStr = br.readLine();
int age = Integer.parseInt(ageStr);
System.out.println("Hello " + name + ", you are " + age + " years old!");
} catch (IOException e) {
System.out.println("Input error: " + e.getMessage());
} catch (NumberFormatException e) {
System.out.println("Invalid age format!");
}
}
}
Output:
Enter your name: John
Enter your age: 25
Hello John, you are 25 years old!
🔹 Reading with Custom Buffer Size
You can specify buffer size for better performance:
import java.io.*;
public class CustomBufferSize {
public static void main(String[] args) {
try {
// Create BufferedReader with custom buffer size (8KB)
FileReader fr = new FileReader("largefile.txt");
BufferedReader br = new BufferedReader(fr, 8192);
String line;
int totalLines = 0;
while ((line = br.readLine()) != null) {
totalLines++;
// Process each line
if (line.contains("important")) {
System.out.println("Found important line: " + line);
}
}
System.out.println("Total lines processed: " + totalLines);
br.close();
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
Output:
Found important line: This is important data
Total lines processed: 1000
🔹 Common Methods
Important BufferedReader methods:
- readLine() - Reads a line of text, returns null at end
- read() - Reads single character
- read(char[] cbuf) - Reads characters into array
- ready() - Checks if stream is ready to read
- skip(long n) - Skips n characters
- close() - Closes the reader
// Method examples
BufferedReader br = new BufferedReader(new FileReader("test.txt"));
boolean ready = br.ready(); // Check if ready
String line = br.readLine(); // Read full line
int character = br.read(); // Read single character
br.skip(100); // Skip 100 characters
br.close(); // Always close!