English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентирован на объекты (I)

Java Ориентирован на объекты (II)

Java Ориентирован на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map коллекции

Java Set коллекции

Java Ввод/вывод (I/O)

Java Reader/Writer

Другие темы Java

Java Reader класс

В этом учебнике мы рассмотрим пример Java Reader, его подклассы и его методы.

Класс Reader в пакете java.io является абстрактной суперклассой, которая представляет поток символов.

Поскольку Reader является абстрактным классом, он сам по себе не работает. Однако, его подклассы могут использоваться для чтения данных.

Подклассы Reader

Чтобы использовать функции Reader, мы можем использовать их подклассы. Среди них есть такие:

В следующем учебнике мы изучим все эти подклассы.

Создание Reader

Для создания Reader我们必须 сначала импортировать пакет java.io.Reader. После импорта пакета мы можем создать Reader.

// Создание Reader
Reader input = new FileReader();

Здесь мы используем класс FileReader для создания Reader. Это потому, что Reader является абстрактным классом. Таким образом, мы не можем создать объект Reader.

Внимание: Мы также можем создать Reader из других подклассов Reader.

Методы Reader

Этот класс Reader предоставляет методы, реализованные его подклассами. Вот некоторые из часто используемых методов:

  • ready() - Проверяет, готов ли Reader для чтения

  • read(char[] array) - Читает символы из потока и хранит их в указанном массиве

  • read(char[] array, int start, int length) - Читает из потока указанное количество символов и хранит их в указанном массиве, начиная с start

  • mark() - Помечает положение уже прочитанных данных в потоке

  • reset() - Восстанавливает поток. Если поток был помечен, то попытается пометить его заново, чтобы переместить. Если поток не был помечен, то попытается его восстановить в соответствующее положение в некоторых методах специфичных для потоков, например, переместив его в начальную точку.

  • skip() - Удаляет из потока указанное количество символов

Пример: Использование FileReader в Reader

Вот как мы реализуем методы Reader класса FileReader.

Предположим, что у нас есть файл с именемinput.txtфайл, содержащий следующее содержимое.

This is a line of text inside the file.

Позвольте нам попробовать использовать FileReader (подкласс Reader) для чтения этого файла.

import java.io.Reader;
import java.io.FileReader;
class Main {
    public static void main(String[] args) {
        //Создание массива символов
        char[] array = new char[100];
        try {
            //Использование FileReader для создания Reader
            Reader input = new FileReader("input.txt");
            //Проверка готовности Reader 
            System.out.println("Есть ли данные в потоке?    " + input.ready());
            //Чтение символов
            input.read(array);
            System.out.println("В потоке данных:");
            System.out.println(array);
            // Закрыть reader
            input.close();
        }
        catch(Exception e) {
            e.getStackTrace();
        }
    }
}

Результат вывода

Есть ли данные в потоке?  true
Данные в потоке:
This is a line of text inside the file.

В примере выше мы использовали класс FileReader для создания читателя. Reader и файлinput.txtссылка.

Reader input = new FileReader("input.txt");

Чтобы изinput.txtЧтение данных из файла, мы уже реализовали эти методы.

input.read();       //Чтение данных из reader
input.close();      //Закрыть reader