Java InputStreamReader
last modified March 3, 2024
In this article we show how to use Java InputStreamReader
to read text in Java.
JavaInputStreamReader is a bridge between byte streams and character streams. It reads bytes and decodes them into characters using a specified charset.
It is recommended to wrap an InputStreamReader within a
BufferedReader for optimal efficiency.
Note that when working with character streams in Java, we should avoid
using streams that rely on default encoding, such as FileReader
or PrintWriter.
Reading from a FileInputStream
In the first example, we use InputStreamReader to read
text from a file stream.
Пе́рвая мирова́я война́ (28 июля 1914 — 11 ноября 1918) — один из самых широкомасштабных вооружённых конфликтов в истории человечества. Формальным поводом к войне послужили события в Сараеве, где 28 июня 1914 года девятнадцатилетний боснийский серб, студент Гаврило Принцип осуществил покушение, в результате которого был убит австрийский эрцгерцог Франц Фердинанд и его морганатическая жена София Хотек.
We have a text in Cyrillic.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
void main() throws Exception {
String fileName = "russian-text.txt";
try (var fis = new FileInputStream(fileName);
var isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
var br = new BufferedReader(isr)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
The example reads a small text in Russian language.
try (var fis = new FileInputStream(fileName);
var isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
var br = new BufferedReader(isr)) {
A FileInputStream is used to create a file stream. The
FileInputStream is wrapped into a InputStreamReader
for reading text data. We set the StandardCharsets.UTF_8 encoding.
Finally, the InputStreamReader is wrapped into a
BufferedReader for optimal efficiency.
Reading from standard input stream
The second example uses InputStreamReader to read text from
standard input stream.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
void main() throws IOException {
try (var br = new BufferedReader(new InputStreamReader(System.in,
StandardCharsets.UTF_8))) {
String line;
System.out.print("Give me a cookie: ");
while (!(("cookie").equals(line = br.readLine()))) {
System.out.println(line);
System.out.print("Give me a cookie: ");
}
}
}
The example prints a prompt and awaits a response from a user. The program ends when it receives the correct input.
try (var br = new BufferedReader(new InputStreamReader(System.in,
StandardCharsets.UTF_8))) {
We use System.in to read from standard input.
Reading from URL stream
The following example reads text from a network stream with InputStreamReader.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
void main() throws IOException {
var url = URI.create("https://www.webcode.me").toURL();
try (var isr = new InputStreamReader(url.openStream(), StandardCharsets.UTF_8);
var br = new BufferedReader(isr)) {
String line;
var sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
sb.append(System.lineSeparator());
}
System.out.println(sb.toString());
}
}
The example reads text from a website.
try (var isr = new InputStreamReader(url.openStream(), StandardCharsets.UTF_8);
var br = new BufferedReader(isr)) {
The example opens a stream from the specified URL. It reads HTML code from
the webcode.me webpage.
Source
Java InputStreamReader - language reference
In this article we have shown how to work with Java
InputStreamReader to read text in Java.
Author
List all Java tutorials.