РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
867 of 1163 menu

Класс InputStreamReader

Класс InputStreamReader является мостом между потоком байтов и потоком символов: он читает байты из входного потока и декодирует их в символы с помощью указанной кодировки. Класс наследуется от абстрактного класса Reader. В первом параметре конструктора мы передаем входной поток байтов (например, InputStream или FileInputStream), во втором параметре можно передать название кодировки в виде строки или объект Charset. Если кодировка не указана, используется кодировка по умолчанию. Класс InputStreamReader также имеет метод getEncoding, возвращающий имя используемой кодировки.

Синтаксис

new InputStreamReader(InputStream in) new InputStreamReader(InputStream in, String charsetName) new InputStreamReader(InputStream in, Charset cs)

Пример

Давайте прочитаем строку из байтового массива, используя кодировку UTF-8:

import java.io.ByteArrayInputStream; import java.io.InputStreamReader; import java.io.IOException; import java.nio.charset.StandardCharsets; public class Main { public static void main(String[] args) throws IOException { byte[] bytes = "abcde".getBytes(StandardCharsets.UTF_8); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); InputStreamReader isr = new InputStreamReader(bais, StandardCharsets.UTF_8); int data; while ((data = isr.read()) != -1) { System.out.print((char) data); } isr.close(); } }

Результат выполнения кода:

"abcde"

Пример

Давайте прочитаем содержимое файла с указанием кодировки и выведем его в консоль:

import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.IOException; import java.nio.charset.StandardCharsets; public class Main { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("test.txt"); InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8); int data; while ((data = isr.read()) != -1) { System.out.print((char) data); } isr.close(); } }

Результат выполнения кода (при содержимом файла "12345"):

"12345"

Смотрите также

  • класс InputStream,
    который представляет поток байтов
  • класс Reader,
    который представляет поток символов
  • класс BufferedReader,
    который добавляет буферизацию при чтении символов
  • класс OutputStreamWriter,
    который преобразует поток символов в поток байтов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить