Spec-Zone.ru › OpenJDK 24

Класс 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)
Пытается прочитать символы в указанный буфер символов.
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

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 - если целевой объект равен null
ReadOnlyBufferException - если целевой объект — буфер только для чтения, даже если его длина равна нулю
С:
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 - Если произошла ошибка ввода-вывода

skip

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

ready

public boolean ready() throws IOException
Указывает, готов ли этот поток к чтению.
Возвращает:
Истина, если следующее чтение гарантированно не будет заблокировано для ввода, ложь в противном случае. Обратите внимание, что возвращение ложного значения не гарантирует, что следующее чтение будет заблокировано.
Выбрасывает:
IOException - Если произошла ошибка ввода-вывода

markSupported

public boolean markSupported()
Указывает, поддерживает ли этот поток операцию mark(). Стандартная реализация всегда возвращает ложь. Подклассы должны переопределить этот метод.
Возвращает:
Истина, если и только если этот поток поддерживает операцию 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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/io/Reader.html

Spec-Zone.ru

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