Класс PushbackInputStream
- Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class PushbackInputStream extends FilterInputStream
PushbackInputStream добавляет функциональность другому входному потоку, а именно возможность «возвращать» или «считывать повторно» байты, сохраняя возвращённые байты во внутреннем буфере. Это полезно в ситуациях, когда фрагменту кода удобно считывать неопределённое число байтов данных, ограниченных определённым значением байта; после считывания завершающего байта фрагмент кода может «считать его повторно», чтобы следующая операция чтения входного потока снова считала возвращённый байт. Например, байты, представляющие символы идентификатора, могут завершаться байтом, представляющим символ оператора; метод, предназначенный для считывания только идентификатора, может считывать данные до обнаружения оператора, а затем вернуть оператор, чтобы его можно было считать повторно.- Начиная с версии:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buf |
Буфер возврата. |
protected int |
pos |
Позиция в буфере возврата, из которой будет считан следующий байт. |
Поля, объявленные в классе FilterInputStream
in | Модификатор и тип | Поле | Описание |
|---|---|---|
protected InputStream |
in |
Входной поток, данные которого фильтруются. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PushbackInputStream |
Создаёт PushbackInputStream с буфером возврата размером 1 байт и сохраняет аргумент — входной поток in — для дальнейшего использования. |
PushbackInputStream |
Создаёт PushbackInputStream с буфером возврата указанного size и сохраняет аргумент — входной поток in — для дальнейшего использования. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает оценку количества байтов, которые можно считать из этого входного потока (или пропустить в нём), не блокируясь при следующем вызове метода для этого входного потока. |
void |
close() |
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним. |
void |
mark |
Отмечает текущую позицию в этом входном потоке. |
boolean |
markSupported() |
Проверяет, поддерживает ли этот входной поток методы mark и reset, которые он не поддерживает. |
int |
read() |
Считывает следующий байт данных из этого входного потока. |
int |
read |
Считывает до len байтов данных из этого входного потока в массив байтов. |
void |
reset() |
Перемещает этот поток в позицию, соответствовавшую моменту последнего вызова метода mark для этого входного потока. |
long |
skip |
Пропускает и отбрасывает n байтов данных из этого входного потока. |
void |
unread |
Возвращает массив байтов, копируя его в начало буфера возврата. |
void |
unread |
Возвращает часть массива байтов, копируя её в начало буфера возврата. |
void |
unread |
Возвращает байт, копируя его в начало буфера возврата. |
Методы, объявленные в классе FilterInputStream
read | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
read |
Считывает до b.length байтов данных из этого входного потока в массив байтов. |
Методы, объявленные в классе InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo | Модификатор и тип | Метод | Описание |
|---|---|---|
static InputStream |
nullInputStream() |
Возвращает новый InputStream, который не считывает байты. |
byte[] |
readAllBytes() |
Считывает все оставшиеся байты из входного потока. |
int |
readNBytes |
Считывает запрошенное количество байтов из входного потока в указанный массив байтов. |
byte[] |
readNBytes |
Считывает из входного потока до указанного количества байтов. |
void |
skipNBytes |
Пропускает и отбрасывает ровно n байтов данных из этого входного потока. |
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 или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения определённого промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения определённого промежутка реального времени. |
Подробное описание полей
buf
protected byte[] buf
- Начиная с версии:
- 1.1
pos
protected int pos
pos равен buf.length; когда буфер заполнен, pos равен нулю.- Начиная с версии:
- 1.1
Подробное описание конструкторов
PushbackInputStream
public PushbackInputStream(InputStream in, int size)
PushbackInputStream с буфером возврата указанного size и сохраняет аргумент — входной поток in — для дальнейшего использования. Изначально буфер возврата пуст.- Параметры:
-
in— входной поток, из которого будут считываться байты. -
size— размер буфера возврата. - Вызывает исключение:
-
IllegalArgumentException— еслиsize <= 0 - Начиная с версии:
- 1.1
PushbackInputStream
public PushbackInputStream(InputStream in)
PushbackInputStream с буфером возврата размером 1 байт и сохраняет аргумент — входной поток in — для дальнейшего использования. Изначально буфер возврата пуст.- Параметры:
-
in— входной поток, из которого будут считываться байты.
Подробное описание методов
read
public int read() throws IOException
int в диапазоне от 0 до 255. Если байт недоступен, поскольку достигнут конец потока, возвращается значение -1. Этот метод блокируется до тех пор, пока не станут доступны входные данные, не будет обнаружен конец потока или не будет выброшено исключение. Этот метод возвращает последний байт, помещённый обратно в поток, если такой есть; в противном случае он вызывает метод read базового входного потока и возвращает полученное от него значение.
- Переопределяет:
-
readв классеFilterInputStream - Возвращает:
- следующий байт данных или
-1, если достигнут конец потока. - Вызывает исключение:
-
IOException— если этот входной поток был закрыт вызовом методаclose()или произошла ошибка ввода-вывода. - См. также:
read
public int read(byte[] b, int off, int len) throws IOException
len байтов данных из этого входного потока в массив байтов. Сначала этот метод считывает все байты, помещённые обратно в поток; если после этого считано меньше len байтов, он считывает данные из базового входного потока. Если len не равно нулю, метод блокируется, пока не станет доступен хотя бы 1 байт данных; в противном случае байты не считываются и возвращается 0.- Переопределяет:
-
readв классеFilterInputStream - Параметры:
-
b— буфер, в который считываются данные. -
off— начальное смещение в целевом массивеb -
len— максимальное количество считываемых байтов. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если данных больше нет, поскольку достигнут конец потока. - Вызывает исключение:
-
NullPointerException— еслиbравноnull. -
IndexOutOfBoundsException— еслиoffотрицательно,lenотрицательно илиlenбольшеb.length - off -
IOException— если этот входной поток был закрыт вызовом методаclose()или произошла ошибка ввода-вывода. - См. также:
unread
public void unread(int b) throws IOException
(byte)b.- Параметры:
-
b— значениеint, младший байт которого нужно поместить обратно в поток. - Вызывает исключение:
-
IOException— если в буфере возврата недостаточно места для байта или этот входной поток был закрыт вызовом методаclose().
unread
public void unread(byte[] b, int off, int len) throws IOException
b[off], за ним — байт со значением b[off+1] и так далее.- Параметры:
-
b— массив байтов, который нужно вернуть. -
off— начальное смещение данных. -
len— количество байтов, которые нужно вернуть. - Вызывает исключение:
-
NullPointerException— еслиbравноnull. -
IOException— если в буфере возврата недостаточно места для указанного количества байтов или этот входной поток был закрыт вызовом методаclose(). - Начиная с версии:
- 1.1
unread
public void unread(byte[] b) throws IOException
b[0], за ним — байт со значением b[1] и так далее.- Параметры:
-
b— массив байтов, который нужно вернуть - Вызывает исключение:
-
NullPointerException— еслиbравноnull. -
IOException— если в буфере возврата недостаточно места для указанного количества байтов или этот входной поток был закрыт вызовом методаclose(). - Начиная с версии:
- 1.1
available
public int available() throws IOException
Метод возвращает сумму количества байтов, помещённых обратно в поток, и значения, возвращаемого методом available.
- Переопределяет:
-
availableв классеFilterInputStream - Возвращает:
- количество байтов, которые можно считать из входного потока (или пропустить в нём), не блокируясь.
- Вызывает исключение:
-
IOException— если этот входной поток был закрыт вызовом методаclose()или произошла ошибка ввода-вывода. - См. также:
skip
public long skip(long n) throws IOException
n байтов данных из этого входного потока. По разным причинам метод skip может пропустить меньше байтов, в том числе ни одного. Если n отрицательно, байты не пропускаются. Метод skip класса PushbackInputStream сначала пропускает байты в буфере возврата, если они там есть. Если нужно пропустить больше байтов, он вызывает метод skip базового входного потока. Возвращается фактическое количество пропущенных байтов.
- Переопределяет:
-
skipв классеFilterInputStream - Параметры:
-
n— количество байтов, которые нужно пропустить. - Возвращает:
- фактическое количество пропущенных байтов.
- Вызывает исключение:
-
IOException— если поток был закрыт вызовом методаclose(),in.skip(n)выбрасывает IOException или произошла ошибка ввода-вывода. - Начиная с версии:
- 1.2
- См. также:
markSupported
public boolean markSupported()
mark и reset, которые он не поддерживает.- Переопределяет:
-
markSupportedв классеFilterInputStream - Возвращает:
-
false, поскольку этот класс не поддерживает методыmarkиreset. - См. также:
mark
public void mark(int readlimit)
Метод mark класса PushbackInputStream ничего не делает.
- Переопределяет:
-
markв классеFilterInputStream - Параметры:
-
readlimit— максимальное количество байтов, которое можно считать до того, как позиция отметки станет недействительной. - См. также:
reset
public void reset() throws IOException
mark для этого входного потока. Метод reset класса PushbackInputStream ничего не делает, кроме выбрасывания IOException.
- Переопределяет:
-
resetв классеFilterInputStream - Вызывает исключение:
-
IOException— если вызван этот метод. - См. также:
close
public void close() throws IOException
- Определено в:
-
closeв интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеFilterInputStream - Вызывает исключение:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
© 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.