Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java InputStreamReader: методы, кодировка и практические примеры

Java InputStreamReader: разбор

Класс InputStreamReader в java.io преобразует сырые байты в символы, делая его незаменимым для чтения текстовых файлов, сетевых потоков или любого байтового источника, представляющего символы.

Он расширяет абстрактный класс Reader и выступает мостом между байтовыми потоками (например, FileInputStream) и символьными потоками.

Когда символ требует несколько байт — как в UTF-8 или UTF-16 — InputStreamReader читает эти байты вместе и производит правильный символ.


Создание InputStreamReader

Начните с импорта необходимого класса:

import java.io.InputStreamReader;

Типичная инстанциация использует FileInputStream как базовый байтовый источник:

FileInputStream file = new FileInputStream("example.txt");
InputStreamReader reader = new InputStreamReader(file);

Если известна кодировка файла, укажите её для избежания ошибок интерпретации:

InputStreamReader reader = new InputStreamReader(file, Charset.forName("UTF-8"));

Использование Charset гарантирует, что ридер интерпретирует байты с намеренным набором символов.


Основные методы InputStreamReader

read()

Пример: чтение текстового файла в символьный массив.

import java.io.*;

class Main {
    public static void main(String[] args) {
        char[] buffer = new char[100];
        try (FileInputStream file = new FileInputStream("input.txt");
             InputStreamReader reader = new InputStreamReader(file)) {
            reader.read(buffer);
            System.out.println("Данные в потоке:\n" + new String(buffer));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Вывод

Данные в потоке: This is a line of text inside the file.

getEncoding()

Получает используемую ридером кодировку:

InputStreamReader defaultReader = new InputStreamReader(file);
InputStreamReader utf8Reader = new InputStreamReader(file, Charset.forName("UTF-8"));
System.out.println("Кодировка по умолчанию: " + defaultReader.getEncoding());
System.out.println("UTF-8 кодировка: " + utf8Reader.getEncoding());

Вывод

Кодировка по умолчанию: Cp1252
UTF-8 кодировка: UTF-8

Когда кодировка не указана, getEncoding() возвращает кодировку платформы по умолчанию.

Примечание: Используйте Charset.forName() для явных кодировок. Подробнее: Java Charset документация.


close()

Всегда закрывайте ридер после использования. Конструкция try-with-resources выше делает это автоматически, но можно также вызвать reader.close() явно.


Другие полезные методы

МетодОписание
ready()Проверяет, готов ли поток к чтению.
mark(int readAheadLimit)Помечает текущую позицию для последующего сброса.
reset()Возвращает к последней отмеченной позиции.

Полный справочник: официальная страница InputStreamReader.

java

  1. Ключевое слово final в Java: переменные, методы и классы
  2. Оператор instanceof в Java: полное руководство с примерами
  3. Статические вложенные классы в Java: использование, отличия и примеры
  4. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  5. Паттерн Singleton в Java: как реализовать и безопасно использовать
  6. Рефлексия в Java: инспекция классов, методов и полей во время выполнения
  7. Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
  8. Освоение Java Scanner: подробное руководство с практическими примерами
  9. Освоение Java Generics: создание переиспользуемого, типобезопасного кода
  10. Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление