Класс 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 |
Читает все символы из этого читателя и записывает их в указанный объект записи в том порядке, в котором они считываются. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения определённого промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова 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
- Определён в:
-
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.