Класс PushbackInputStream
- Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class PushbackInputStream extends FilterInputStream
PushbackInputStream добавляет функциональность к другому входному потоку, а именно возможность «возвращать» или «считывать обратно» байты, сохраняя возвращённые байты во внутреннем буфере. Это полезно в ситуациях, когда фрагменту кода удобно считывать неопределённое количество байтов данных, ограниченных определённым значением байта; после считывания завершающего байта фрагмент кода может «считать его обратно», чтобы следующая операция чтения из входного потока снова считала возвращённый байт. Например, байты, представляющие символы идентификатора, могут завершаться байтом, представляющим символ оператора; метод, задача которого — считывать только идентификатор, может считывать данные, пока не встретит оператор, а затем вернуть его для повторного считывания.- Начиная с:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buf |
Буфер возврата. |
protected int |
pos |
Позиция в буфере возврата, из которой будет считан следующий байт. |
Поля, объявленные в классе FilterInputStream
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
Методы, объявленные в классе InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Подробное описание полей
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/PushbackInputStream.html