Spec-Zone.ru › OpenJDK 27

Класс Reader

java.lang.Object
java.io.Reader
Все реализуемые интерфейсы:
Closeable, AutoCloseable, Readable
Прямые известные подклассы:
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
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
Объект, используемый для синхронизации операций над этим потоком.

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

Reader()
Reader(Object lock)
Модификатор Конструктор Описание
protected
Создаёт новый читатель символьного потока, критические секции которого будут синхронизироваться на самом читателе.
protected
Создаёт новый читатель символьного потока, критические секции которого будут синхронизироваться на указанном объекте.

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

Модификатор и тип Метод Описание
abstract void close()
Закрывает поток и освобождает все связанные с ним системные ресурсы.
void mark(int readAheadLimit)
Помечает текущую позицию в потоке.
boolean markSupported()
Сообщает, поддерживает ли этот поток операцию mark().
static Reader nullReader()
Возвращает новый Reader, который не читает символы.
static Reader of(CharSequence cs)
Возвращает Reader, который читает символы из CharSequence.
int read()
Читает один символ.
int read(char[] cbuf)
Читает символы в массив.
abstract int read(char[] cbuf, int off, int len)
Читает символы в часть массива.
int read(CharBuffer target)
Пытается прочитать символы в указанный символьный буфер.
String readAllAsString()
Читает все оставшиеся символы в строку.
List<String> readAllLines()
Читает все оставшиеся символы как текстовые строки.
boolean ready()
Сообщает, готов ли этот поток к чтению.
void reset()
Сбрасывает поток.
long skip(long n)
Пропускает символы.
long transferTo(Writer out)
Читает все символы из этого читателя и записывает их в указанный объект записи в том порядке, в котором они считываются.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения определённого промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения определённого промежутка реального времени.

Подробное описание полей

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

of

public static Reader of(CharSequence cs)
Возвращает Reader, который читает символы из CharSequence. Читатель изначально открыт, чтение начинается с первого символа последовательности.

Возвращённый читатель поддерживает операции mark() и reset().

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

Если последовательность изменится, пока читатель открыт (например, изменится её длина), поведение не определено.

Параметры:
cs — CharSequence, предоставляющая символьный поток.
Возвращает:
Reader, который читает символы из cs
Выбрасывает:
NullPointerException — если cs имеет значение null
Начиная с:
24

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 равна нулю, символы не считываются и возвращается 0; в противном случае выполняется попытка прочитать хотя бы один символ. Если символы недоступны, поскольку достигнут конец потока, возвращается значение -1; иначе считывается и сохраняется в cbuf хотя бы один символ.

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

read

public abstract int read(char[] cbuf, int off, int len) throws IOException
Читает символы в часть массива. Этот метод блокирует выполнение до тех пор, пока не появятся входные данные, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока.

Если len равен нулю, символы не считываются и возвращается 0; в противном случае выполняется попытка прочитать хотя бы один символ. Если символы недоступны, поскольку достигнут конец потока, возвращается значение -1; иначе считывается и сохраняется в cbuf хотя бы один символ.

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

readAllLines

public List<String> readAllLines() throws IOException
Читает все оставшиеся символы как текстовые строки. Этот метод блокирует выполнение, пока не будут прочитаны все оставшиеся символы и не будет обнаружен конец потока либо не будет выброшено исключение. Метод не закрывает читатель.

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

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

Признаком конца строки может быть один из следующих символов: перевод строки "\n" (U+000A), возврат каретки "\r" (U+000D) или возврат каретки, за которым непосредственно следует перевод строки "\r\n" (U+000D U+000A).

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

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

Примечание к API:
Этот метод предназначен для простых случаев, когда уместно и удобно считывать все входные данные в список строк. Он не подходит для чтения данных из неизвестного источника, поскольку это может привести к выделению произвольного объёма памяти.
Возвращает:
оставшиеся символы в виде строк текста, сохранённых в неизменяемом List из String в порядке их чтения
Выбрасывает:
IOException — при возникновении ошибки ввода-вывода
OutOfMemoryError — если количество оставшихся символов превышает ограничение реализации для String.
Начиная с:
25
См. также:
  • String.lines()
  • readAllAsString()
  • Files.readAllLines(Path, Charset)

readAllAsString

public String readAllAsString() throws IOException
Читает все оставшиеся символы в строку. Этот метод блокирует выполнение, пока не будут прочитаны все оставшиеся символы, включая все разделители строк, и не будет обнаружен конец потока либо не будет выброшено исключение. Полученная строка будет содержать разделители строк в том виде, в каком они встречаются в потоке. Метод не закрывает читатель.

Когда этот читатель достигает конца потока, последующие вызовы метода возвращают пустую строку.

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

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

Примечание к API:
Этот метод предназначен для простых случаев, когда уместно и удобно считывать все входные данные в String. Он не подходит для чтения данных из неизвестного источника, поскольку это может привести к выделению произвольного объёма памяти.
Возвращает:
String, содержащую все оставшиеся символы
Выбрасывает:
IOException — при возникновении ошибки ввода-вывода
OutOfMemoryError — если количество оставшихся символов превышает ограничение реализации для String.
Начиная с:
25
См. также:
  • readAllLines()
  • Files.readString(Path)

skip

public long skip(long n) throws IOException
Пропускает символы. Этот метод блокирует выполнение до тех пор, пока не появятся символы, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока. Если до вызова этого метода поток уже достиг конца, символы не пропускаются и возвращается ноль.
Параметры:
n — количество символов, которые требуется пропустить
Возвращает:
Фактическое количество пропущенных символов
Выбрасывает:
IllegalArgumentException — если n отрицателен.
IOException — при возникновении ошибки ввода-вывода

ready

public boolean ready() throws IOException
Сообщает, готов ли этот поток к чтению.
Возвращает:
True, если гарантируется, что следующий вызов read() не будет блокироваться в ожидании входных данных; в противном случае false. Обратите внимание: возвращаемое значение false не гарантирует, что следующий вызов read будет блокироваться.
Выбрасывает:
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
Читает все символы из этого читателя и записывает их в указанный объект записи в том порядке, в котором они считываются. По завершении этого метода читатель будет находиться в конце потока. Метод не закрывает ни читатель, ни объект записи.

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

Если общее количество переданных символов превышает Long.MAX_VALUE, будет возвращено значение Long.MAX_VALUE.

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API