Класс Reader

Все реализуемые интерфейсы:
Closeable, AutoCloseable, Readable
Прямые известные подклассы:
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader, URLReader
public abstract class Reader
extends Object
implements Readable, Closeable

Абстрактный класс для чтения потоков символов. Единственными методами, которые должен реализовать подкласс, являются read(char[], int, int) и close(). Однако большинство подклассов переопределят некоторые из методов, определённых здесь, для обеспечения большей эффективности, дополнительных функций или того и другого.

С:
1.1
См. также:
BufferedReader, LineNumberReader, CharArrayReader, InputStreamReader, FileReader, FilterReader, PushbackReader, PipedReader, StringReader, Writer

Краткое описание полей

Модификатор и тип Поле Описание
protected Object lock

Объект, используемый для синхронизации операций с этим потоком.

Краткое описание конструкторов

Модификатор Конструктор Описание
protected Reader()

Создаёт новый читатель потока символов, чьи критические секции будут синхронизированы на самом читателе.

protected Reader​(Object lock)

Создаёт новый читатель потока символов, чьи критические секции будут синхронизированы на заданном объекте.

Краткое описание методов

Модификатор и тип Метод Описание
abstract void close()

Закрывает поток и освобождает все связанные с ним системные ресурсы.

void mark​(int readAheadLimit)

Помечает текущее положение в потоке.

boolean markSupported()

Указывает, поддерживает ли этот поток операцию mark().

static Reader nullReader()

Возвращает новый Reader, который не читает символы.

int read()

Читает один символ.

int read​(char[] cbuf)

Читает символы в массив.

abstract int read​(char[] cbuf, int off, int len)

Читает символы в часть массива.

int read​(CharBuffer target)

Пытается прочитать символы в указанный буфер символов.

boolean ready()

Указывает, готов ли этот поток к чтению.

void reset()

Сбрасывает поток.

long skip​(long n)

Пропускает символы.

long transferTo​(Writer out)

Читает все символы из этого читателя и записывает символы в заданный писатель в том порядке, в котором они считываются.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Поля

lock

protected Object lock

Объект, используемый для синхронизации операций с этим потоком. Для повышения эффективности объект потока символов может использовать другой объект, а не себя, для защиты критических секций. Поэтому подкласс должен использовать объект в этом поле, а не this или синхронизированный метод.

Конструкторы

Reader

protected Reader()

Создаёт новый читатель потока символов, чьи критические секции будут синхронизированы с самим читателем.

Reader

protected Reader(Object lock)

Создаёт новый читатель потока символов, чьи критические секции будут синхронизированы с указанным объектом.

Параметры:
lock - Объект для синхронизации.

Методы

nullReader

public static Reader nullReader()

Возвращает новый Reader , который не считывает символы. Возвращённый поток изначально открыт. Поток закрывается вызовом метода close(). Последующие вызовы метода close() не имеют эффекта.

Пока поток открыт, методы read(), read(char[]), read(char[], int, int), read(Charbuffer), ready(), skip(long), и transferTo() ведут себя так, как будто достигнут конец потока. После закрытия потока эти методы выбрасывают IOException.

Метод markSupported() возвращает false. Методы mark() и reset() выбрасывают IOException.

object, используемый для синхронизации операций с возвращённым Reader, не указан.

Возвращает:
Reader , который не считывает символы
С момента:
11

read

public int read(CharBuffer target)
         throws IOException

Попытка чтения символов в указанный буфер символов. Буфер используется как хранилище символов без изменений: единственные изменения — результат операции put. Никакого переворачивания или перемотки буфера не происходит.

Указано в:
read в интерфейсе Readable
Параметры:
target - буфер для чтения символов
Возвращает:
Количество добавленных в буфер символов или -1, если этот источник символов достиг конца
Выбрасывает:
IOException - если произошла ошибка ввода-вывода
NullPointerException - если target равно null
ReadOnlyBufferException - если target — буфер только для чтения
С момента:
1.5

read

public int read()
         throws IOException

Считывает один символ. Этот метод будет блокировать выполнение, пока символ не станет доступен, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока.

Подклассы, предназначенные для поддержки эффективного ввода по одному символу, должны переопределить этот метод.

Возвращает:
Считанный символ, как целое число в диапазоне от 0 до 65535 (0x00-0xffff), или -1, если достигнут конец потока
Выбрасывает:
IOException - если произошла ошибка ввода-вывода

read

public int read(char[] cbuf)
         throws IOException

Считывает символы в массив. Этот метод будет блокировать выполнение, пока не будет доступен какой-либо ввод, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока.

Параметры:
cbuf - Буфер назначения
Возвращает:
Количество считанных символов или -1, если достигнут конец потока
Выбрасывает:
IOException - если произошла ошибка ввода-вывода

read

public abstract int read(char[] cbuf,
                         int off,
                         int len)
                  throws IOException

Считывает символы в часть массива. Этот метод будет блокировать выполнение, пока не будет доступен какой-либо ввод, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока.

Параметры:
cbuf - Буфер назначения
off - Смещение, с которого начать хранение символов
len - Максимальное количество символов для чтения
Возвращает:
Количество считанных символов или -1, если достигнут конец потока
Выбрасывает:
IOException - если произошла ошибка ввода-вывода
IndexOutOfBoundsException - если off отрицательно, или len отрицательно, или len больше, чем cbuf.length - off

skip

public long skip(long n)
          throws IOException

Пропускает символы. Этот метод будет блокировать выполнение, пока не будут доступны символы, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока.

Параметры:
n - Количество символов для пропуска
Возвращает:
Количество фактически пропущенных символов
Выбрасывает:
IllegalArgumentException - если n отрицательно.
IOException - если произошла ошибка ввода-вывода

ready

public boolean ready()
              throws IOException

Указывает, готов ли этот поток к чтению.

Возвращает:
True, если следующее чтение гарантированно не заблокирует ожидание ввода, false в противном случае. Обратите внимание, что возвращение false не гарантирует, что следующее чтение заблокируется.
Выбрасывает:
IOException - если произошла ошибка ввода-вывода

markSupported

public boolean markSupported()

Указывает, поддерживает ли этот поток операцию mark(). По умолчанию реализация всегда возвращает false. Подклассы должны переопределить этот метод.

Возвращает:
true тогда и только тогда, когда этот поток поддерживает операцию mark.

mark

public void mark(int readAheadLimit)
          throws IOException

Помечает текущую позицию в потоке. Последующие вызовы reset() будут пытаться переместить поток в эту точку. Не все потоки символов поддерживают операцию mark().

Параметры:
readAheadLimit - Ограничение на количество символов, которые могут быть прочитаны, сохраняя при этом метку. После чтения этого количества символов попытка сброса потока может завершиться неудачно.
Выбрасывает:
IOException - если поток не поддерживает mark(), или если произошла ошибка ввода-вывода

reset

public void reset()
           throws IOException

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

Выбрасывает:
IOException - если поток не был помечен, или метка была отменена, или поток не поддерживает reset(), или произошла ошибка ввода-вывода

close

public abstract void close()
                    throws IOException

Закрывает поток и освобождает любые системные ресурсы, связанные с ним. После закрытия потока дальнейшие вызовы read(), ready(), mark(), reset() или skip() выбросят исключение IOException. Закрытие уже закрытого потока не оказывает никакого эффекта.

Указано в:
close в интерфейсе AutoCloseable
Указано в:
close в интерфейсе Closeable
Выбрасывает:
IOException - если произошла ошибка ввода-вывода

transferTo

public long transferTo(Writer out)
                throws IOException

Считывает все символы из этого читателя и записывает символы в указанный писатель в том порядке, в котором они считываются. По завершении, этот читатель будет находиться в конце потока. Этот метод не закрывает ни читатель, ни писатель.

Этот метод может блокировать выполнение, бесконечно считывая из читателя или записывая в писатель. Поведение в случае, когда читатель и/или писатель асинхронно закрываются или поток прерывается во время передачи, сильно зависит от читателя и писателя и поэтому не определено.

Если произошла ошибка ввода-вывода при чтении из читателя или записи в писатель, то это может произойти после чтения или записи некоторых символов. Следовательно, читатель может не быть в конце потока, и один или оба потока могут находиться в несогласованном состоянии. Сильно рекомендуется немедленно закрыть оба потока, если произошла ошибка ввода-вывода.

Параметры:
out - писатель, не null
Возвращает:
количество переданных символов
Выбрасывает:
IOException - если произошла ошибка ввода-вывода при чтении или записи
NullPointerException - если out является null
С момента:
10

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Reader.html

Spec-Zone .ru
спецификации, руководства, описания, API