Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Поле Описание
protected InputStream 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
Модификатор и тип Метод Описание
int read(byte[] b)
Считывает до b.length байтов данных из этого входного потока в массив байтов.

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

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Модификатор и тип Метод Описание
static InputStream nullInputStream()
Возвращает новый InputStream, который не считывает байты.
byte[] readAllBytes()
Считывает все оставшиеся байты из входного потока.
int readNBytes(byte[] b, int off, int len)
Считывает запрошенное количество байтов из входного потока в указанный массив байтов.
byte[] readNBytes(int len)
Считывает из входного потока до указанного количества байтов.
void skipNBytes(long n)
Пропускает и отбрасывает ровно n байтов данных из этого входного потока.
long transferTo(OutputStream out)
Считывает все байты из этого входного потока и записывает их в указанный выходной поток в том порядке, в котором они были считаны.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения определённого промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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() или произошла ошибка ввода-вывода.
См. также:
  • 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, 2026, 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.

Spec-Zone.ru

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