Класс Reader
- java.lang.Object
-
- java.io.Reader
- Все реализуемые интерфейсы:
-
Closeable,AutoCloseable,Readable
- Прямые известные подклассы:
-
BufferedReader,CharArrayReader,FilterReader,InputStreamReader,PipedReader,StringReader,URLReader
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 | Объект, используемый для синхронизации операций с этим потоком. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | Reader() | Создаёт новый читатель потока символов, чьи критические секции будут синхронизированы на самом читателе. |
protected | Reader(Object lock) | Создаёт новый читатель потока символов, чьи критические секции будут синхронизированы на заданном объекте. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void | close() | Закрывает поток и освобождает все связанные с ним системные ресурсы. |
void | mark(int readAheadLimit) | Помечает текущее положение в потоке. |
boolean | markSupported() | Указывает, поддерживает ли этот поток операцию mark(). |
static Reader | nullReader() | Возвращает новый |
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
read
public int read(CharBuffer target)
throws IOException Попытка чтения символов в указанный буфер символов. Буфер используется как хранилище символов без изменений: единственные изменения — результат операции put. Никакого переворачивания или перемотки буфера не происходит.
- Указано в:
-
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- Буфер назначения - Возвращает:
- Количество считанных символов или -1, если достигнут конец потока
- Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода
read
public abstract int read(char[] cbuf,
int off,
int len)
throws IOException Считывает символы в часть массива. Этот метод будет блокировать выполнение, пока не будет доступен какой-либо ввод, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока.
- Параметры:
-
cbuf- Буфер назначения -
off- Смещение, с которого начать хранение символов -
len- Максимальное количество символов для чтения - Возвращает:
- Количество считанных символов или -1, если достигнут конец потока
- Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода -
IndexOutOfBoundsException- еслиoffотрицательно, илиlenотрицательно, илиlenбольше, чемcbuf.length - off
skip
public long skip(long n)
throws IOException Пропускает символы. Этот метод будет блокировать выполнение, пока не будут доступны символы, не произойдёт ошибка ввода-вывода или не будет достигнут конец потока.
- Параметры:
-
n- Количество символов для пропуска - Возвращает:
- Количество фактически пропущенных символов
- Выбрасывает:
-
IllegalArgumentException- еслиnотрицательно. -
IOException- если произошла ошибка ввода-вывода
ready
public boolean ready()
throws IOException Указывает, готов ли этот поток к чтению.
- Возвращает:
- True, если следующее чтение гарантированно не заблокирует ожидание ввода, false в противном случае. Обратите внимание, что возвращение false не гарантирует, что следующее чтение заблокируется.
- Выбрасывает:
-
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 Считывает все символы из этого читателя и записывает символы в указанный писатель в том порядке, в котором они считываются. По завершении, этот читатель будет находиться в конце потока. Этот метод не закрывает ни читатель, ни писатель.
Этот метод может блокировать выполнение, бесконечно считывая из читателя или записывая в писатель. Поведение в случае, когда читатель и/или писатель асинхронно закрываются или поток прерывается во время передачи, сильно зависит от читателя и писателя и поэтому не определено.
Если произошла ошибка ввода-вывода при чтении из читателя или записи в писатель, то это может произойти после чтения или записи некоторых символов. Следовательно, читатель может не быть в конце потока, и один или оба потока могут находиться в несогласованном состоянии. Сильно рекомендуется немедленно закрыть оба потока, если произошла ошибка ввода-вывода.
- Параметры:
-
out- писатель, не null - Возвращает:
- количество переданных символов
- Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода при чтении или записи -
NullPointerException- еслиoutявляетсяnull - С момента:
- 10
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Reader.html