Spec-Zone.ru › OpenJDK 21

Класс 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, который не читает никаких символов.
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, не указан.

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

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
Указывает, готов ли этот поток к считыванию.
Возвращает:
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

© 1993, 2023, 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/21/docs/api/java.base/java/io/Reader.html

Spec-Zone.ru

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