Класс Reader
- Все реализуемые интерфейсы:
Closeable, AutoCloseable, Readable
- Прямые известные подклассы:
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
public abstract class Reader extends Object implements Readable, Closeable
- Начиная с:
- 1.1
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Object |
lock |
Объект, используемый для синхронизации операций с этим потоком. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый читатель символьного потока, критические секции которого синхронизируются на самом читателе. |
|
protected |
Создаёт новый читатель символьного потока, критические секции которого синхронизируются на указанном объекте. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
close() |
Закрывает поток и освобождает все связанные с ним системные ресурсы. |
void |
mark |
Помечает текущую позицию в потоке. |
boolean |
markSupported() |
Сообщает, поддерживает ли этот поток операцию mark(). |
static Reader |
nullReader() |
Возвращает новый Reader, который не считывает символы. |
static Reader |
of |
Возвращает Reader, который считывает символы из CharSequence. |
int |
read() |
Считывает один символ. |
int |
read |
Считывает символы в массив. |
abstract int |
read |
Считывает символы в часть массива. |
int |
read |
Пытается считать символы в указанный символьный буфер. |
String |
readAllAsString() |
Считывает все оставшиеся символы в строку. |
List |
readAllLines() |
Считывает все оставшиеся символы в виде строк текста. |
boolean |
ready() |
Сообщает, готов ли этот поток к чтению. |
void |
reset() |
Сбрасывает поток. |
long |
skip |
Пропускает символы. |
long |
transferTo |
Считывает все символы из этого читателя и записывает их в указанный писатель в том же порядке. |
Подробное описание полей
lock
protected Object lock
this или синхронизированный метод.Подробное описание конструкторов
Reader
protected Reader()
Reader
protected Reader(Object lock)
- Параметры:
-
lock— объект Object, на котором выполняется синхронизация.
Подробное описание методов
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
- Определено в:
-
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
- См. также:
readAllAsString
public String readAllAsString() throws IOException
Когда этот читатель достигает конца потока, последующие вызовы метода возвращают пустую строку.
Поведение в случае асинхронного закрытия читателя или прерывания потока во время чтения зависит от конкретной реализации читателя и поэтому не определено.
При возникновении ошибки ввода-вывода во время чтения из потока она может возникнуть после считывания некоторых, но не всех символов. Следовательно, поток может не находиться в конце и может быть в несогласованном состоянии. В случае ошибки ввода-вывода настоятельно рекомендуется незамедлительно закрыть читатель.
- Примечание к API:
- Этот метод предназначен для простых случаев, когда уместно и удобно считать все входные данные в
String. Он не подходит для чтения данных из неизвестного источника, поскольку это может привести к выделению произвольного объёма памяти. - Возвращает:
String, содержащую все оставшиеся символы- Выбрасывает:
-
IOException— если возникает ошибка ввода-вывода -
OutOfMemoryError— если количество оставшихся символов превышает ограничение реализации дляString. - Начиная с:
- 25
- См. также:
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()
- Возвращает:
- true тогда и только тогда, когда этот поток поддерживает операцию mark.
mark
public void mark(int readAheadLimit) throws IOException
- Параметры:
-
readAheadLimit— ограничение на количество символов, которые можно считать с сохранением метки. После считывания этого количества символов попытка сбросить поток может завершиться неудачей. - Выбрасывает:
-
IOException— если поток не поддерживает mark() или возникает другая ошибка ввода-вывода
reset
public void reset() throws IOException
- Выбрасывает:
-
IOException— если поток не был помечен, метка стала недействительной, поток не поддерживает reset() или возникает другая ошибка ввода-вывода
close
public abstract void close() throws 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
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Reader.html