Spec-Zone.ru › OpenJDK 25

Класс PushbackInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.PushbackInputStream
Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class PushbackInputStream extends FilterInputStream
PushbackInputStream добавляет функциональность к другому входному потоку, а именно возможность «возвращать» или «считывать обратно» байты, сохраняя возвращённые байты во внутреннем буфере. Это полезно в ситуациях, когда фрагменту кода удобно считывать неопределённое количество байтов данных, ограниченных определённым значением байта; после считывания завершающего байта фрагмент кода может «считать его обратно», чтобы следующая операция чтения из входного потока снова считала возвращённый байт. Например, байты, представляющие символы идентификатора, могут завершаться байтом, представляющим символ оператора; метод, задача которого — считывать только идентификатор, может считывать данные, пока не встретит оператор, а затем вернуть его для повторного считывания.
Начиная с:
1.0

Краткое описание полей

Модификатор и тип Поле Описание
protected byte[] buf
Буфер возврата.
protected int pos
Позиция в буфере возврата, из которой будет считан следующий байт.

Поля, объявленные в классе FilterInputStream

in

Краткое описание конструкторов

Конструктор Описание
PushbackInputStream(InputStream in)
Создаёт PushbackInputStream с буфером возврата размером 1 байт и сохраняет аргумент — входной поток in — для последующего использования.
PushbackInputStream(InputStream in, int size)
Создаёт PushbackInputStream с буфером возврата указанного size и сохраняет аргумент — входной поток in — для последующего использования.

Краткое описание методов

Модификатор и тип Метод Описание
int available()
Возвращает оценку количества байтов, которые можно считать из этого входного потока (или пропустить) без блокировки при следующем вызове метода для этого входного потока.
void close()
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним.
void mark(int readlimit)
Помечает текущую позицию в этом входном потоке.
boolean markSupported()
Проверяет, поддерживает ли этот входной поток методы mark и reset, которые он не поддерживает.
int read()
Считывает следующий байт данных из этого входного потока.
int read(byte[] b, int off, int len)
Считывает до len байтов данных из этого входного потока в массив байтов.
void reset()
Перемещает этот поток в позицию, соответствовавшую моменту последнего вызова метода mark для этого входного потока.
long skip(long n)
Пропускает и отбрасывает n байтов данных из этого входного потока.
void unread(byte[] b)
Возвращает массив байтов, копируя его в начало буфера возврата.
void unread(byte[] b, int off, int len)
Возвращает часть массива байтов, копируя её в начало буфера возврата.
void unread(int b)
Возвращает байт, копируя его в начало буфера возврата.

Методы, объявленные в классе FilterInputStream

read

Методы, объявленные в классе InputStream

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

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() или произошла ошибка ввода-вывода.
См. также:
  • InputStream.read()

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() или произошла ошибка ввода-вывода.
См. также:
  • InputStream.read(byte[], int, int)

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() или произошла ошибка ввода-вывода.
См. также:
  • FilterInputStream.in
  • InputStream.available()

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
См. также:
  • FilterInputStream.in
  • InputStream.skip(long n)

markSupported

public boolean markSupported()
Проверяет, поддерживает ли этот входной поток методы mark и reset, которые он не поддерживает.
Переопределяет:
markSupported в классе FilterInputStream
Возвращает:
false, поскольку этот класс не поддерживает методы mark и reset.
См. также:
  • InputStream.mark(int)
  • InputStream.reset()

mark

public void mark(int readlimit)
Помечает текущую позицию в этом входном потоке.

Метод mark класса PushbackInputStream ничего не делает.

Переопределяет:
mark в классе FilterInputStream
Параметры:
readlimit — максимальное количество байтов, которые можно считать до того, как позиция метки станет недействительной.
См. также:
  • InputStream.reset()

reset

public void reset() throws IOException
Перемещает этот поток в позицию, соответствовавшую моменту последнего вызова метода mark для этого входного потока.

Метод reset класса PushbackInputStream ничего не делает, кроме генерации IOException.

Переопределяет:
reset в классе FilterInputStream
Исключения:
IOException — если вызван этот метод.
См. также:
  • InputStream.mark(int)
  • IOException

close

public void close() throws IOException
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним. После закрытия потока дальнейшие вызовы read(), unread(), available(), reset() или skip() приведут к генерации IOException. Повторное закрытие уже закрытого потока не оказывает никакого эффекта.
Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Переопределяет:
close в классе FilterInputStream
Исключения:
IOException — если произошла ошибка ввода-вывода.
См. также:
  • FilterInputStream.in

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания, ориентированные на разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

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