Класс 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(). Однако большинство подклассов переопределяют некоторые методы, определенные здесь, чтобы обеспечить более высокую эффективность, дополнительные функции или оба этих преимущества.
- С момента:
- JDK1.1
- См. также:
-
BufferedReader,LineNumberReader,CharArrayReader,InputStreamReader,FileReader,FilterReader,PushbackReader,PipedReader,StringReader,Writer
Поля
| Модификатор и тип | Поле и описание |
|---|---|
protected Object |
lock Объект, используемый для синхронизации операций с этим потоком. |
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
Reader() Создает новый читатель потока символов, чьи критические секции будут синхронизироваться на самом читателе. |
protected |
Reader(Object lock) Создает новый читатель потока символов, чьи критические секции будут синхронизироваться на заданном объекте. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
abstract void |
close() Закрывает поток и освобождает все системные ресурсы, связанные с ним. |
void |
mark(int readAheadLimit) Помечает текущую позицию в потоке. |
boolean |
markSupported() Указывает, поддерживает ли этот поток операцию mark(). |
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) Пропускает символы. |
Методы, унаследованные от класса 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- Объект для синхронизации.
Методы
read
public int read(CharBuffer target)
throws IOException Пытается прочитать символы в указанный буфер символов. Буфер используется как хранилище символов как есть: единственные изменения — результаты операции put. Никакой переворота или перемотки буфера не производится.
- Задано:
-
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- Буфер назначения - Возвращает:
- Количество прочитанных символов, или -1, если достигнут конец потока
- Исключения:
-
IOException- Если произошла ошибка ввода/вывода
read
public abstract int read(char[] cbuf,
int off,
int len)
throws IOException Читает символы в часть массива. Этот метод будет блокироваться до тех пор, пока некоторые данные не будут доступны, не произойдет ошибка ввода/вывода или не будет достигнут конец потока.
- Параметры:
-
cbuf- Буфер назначения -
off- Смещение, с которого начать хранение символов -
len- Максимальное количество символов для чтения - Возвращает:
- Количество прочитанных символов, или -1, если достигнут конец потока
- Исключения:
-
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в интерфейсеCloseable - Задано:
-
closeв интерфейсеAutoCloseable - Исключения:
-
IOException- Если произошла ошибка ввода/вывода
© 1993, 2020, 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.