Java BufferedReader
last modified January 27, 2024
Java BufferedReader tutorial shows how to use Java BufferedReader to improve reading performance of text files. Java tutorial is a comprehensive tutorial on Java language.
Buffered input streams read data from a memory area known as a buffer. The native input API is called only when the buffer is empty.
For unbuffered I/O stream, each read request is handled directly by the underlying OS. This is much less efficient, since each such request often triggers disk access, network activity, or some other operation that is relatively expensive.
Java BufferedReader
BufferedReader reads text from a character-input stream, buffering
characters so as to provide for the efficient reading of characters, arrays, and
lines.
The buffer size may be specified, or the default size may be used. The default is large enough for most purposes.
Some of the following examples use this text file:
The Battle of Thermopylae was fought between an alliance of Greek city-states, led by King Leonidas of Sparta, and the Persian Empire of Xerxes I over the course of three days, during the second Persian invasion of Greece.
Java BufferedReader example
In the following example, we use BufferedReader to read a
text file. It is used with the FileReader class.
FileReader relied on the
default platform's encoding. Since Java 11, the issue was corrected. It is
possible now to explicitly specify the encoding.
package com.zetcode;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class BufferedReaderEx {
public static void main(String[] args) throws IOException {
var fileName = "src/resources/thermopylae.txt";
try (var br = new BufferedReader(new FileReader(fileName, StandardCharsets.UTF_8))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
}
In the example, we use the BufferedReader with the FileReader.
var fileName = "src/resources/thermopylae.txt";
We specify the file name.
try (var br = new BufferedReader(new FileReader(fileName, StandardCharsets.UTF_8))) {
We wrap the FileReader to the BufferedReader to improve its
performance.
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
The readLine reads a line of text. It returns the string
containing the contents of the line, not including any line-termination
characters, or null if the end of the stream has been reached
without reading any characters.
Java Files.newBufferedReader
The Files.newBufferedReader is a convenience method which opens a
file for reading, returning a BufferedReader that may be used to
read text from the file in an efficient manner. Bytes from the file are decoded
into characters using the specified charset.
package com.zetcode;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
public class BufferedReaderEx2 {
public static void main(String[] args) throws IOException {
var fileName = "src/resources/thermopylae.txt";
var path = Paths.get(fileName);
try (var br = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
}
The example reads the thermopylae.txt file, utilizing the
Files.newBufferedReader method.
Java BufferedReader with InputStreamReader
The following example uses BufferedReader with InputStreamReader.
InputStreamReader is a bridge from byte streams to character
streams. It reads bytes and decodes them into characters using a specified
charset.
package com.zetcode;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class BufferedReaderEx3 {
public static void main(String[] args) throws IOException {
var urlPath = "http://webcode.me";
var url = new URL(urlPath);
try (var br = new BufferedReader(new InputStreamReader(url.openStream(),
StandardCharsets.UTF_8))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
}
The example reads the home page of the webcode.me site.
Source
Java BufferedReader - language reference
In this article we have worked with Java BufferedReader.
Author
List all Java tutorials.