Spec-Zone.ru › OpenJDK 24

Класс 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
Позиция в буфере возврата, с которой будет считываться следующий байт.

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

in

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

Конструктор Описание
PushbackInputStream(InputStream in)
Создает PushbackInputStream с буфером возврата размером 1 байт и сохраняет свой аргумент, поток ввода in, для последующего использования.
PushbackInputStream(InputStream in, int size)
Создает PushbackInputStream с буфером возврата заданного размера и сохраняет свой аргумент, поток ввода 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)
Возвращает байт, копируя его в начало буфера возврата.

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

read

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

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo

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

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

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

buf

protected byte[] buf
Буфер сдвига.
Since:
1.1

pos

protected int pos
Позиция в буфере сдвига, с которой будет считываться следующий байт. Когда буфер пуст, pos равно buf.length; когда буфер полон, pos равно нулю.
Since:
1.1

Подробное описание конструкторов

PushbackInputStream

public PushbackInputStream(InputStream in, int size)
Создаёт PushbackInputStream с буфером сдвига заданного size и сохраняет свой аргумент, поток ввода in, для последующего использования. Изначально буфер сдвига пустой.
Parameters:
in - поток ввода, из которого будут считываться байты.
size - размер буфера сдвига.
Throws:
IllegalArgumentException - если size <= 0
Since:
1.1

PushbackInputStream

public PushbackInputStream(InputStream in)
Создаёт PushbackInputStream с буфером сдвига размером 1 байт и сохраняет свой аргумент, поток ввода in, для последующего использования. Изначально буфер сдвига пустой.
Parameters:
in - поток ввода, из которого будут считываться байты.

Подробное описание методов

read

public int read() throws IOException
Считывает следующий байт данных из этого потока ввода. Значение байта возвращается как int в диапазоне 0 до 255. Если байт недоступен из-за достижения конца потока, возвращается значение -1. Этот метод блокируется до тех пор, пока данные ввода не станут доступны, не будет обнаружен конец потока или не будет выброшено исключение.

Этот метод возвращает самый недавно отложенный байт, если такой есть, а в противном случае вызывает метод read своего основного потока ввода и возвращает любое значение, которое возвращает этот метод.

Overrides:
read в классе FilterInputStream
Returns:
следующий байт данных или -1, если достигнут конец потока.
Throws:
IOException - если этот поток ввода был закрыт путём вызова его метода close() или произошла ошибка ввода-вывода.
See Also:
  • InputStream.read()

read

public int read(byte[] b, int off, int len) throws IOException
Считывает до len байтов данных из этого потока ввода в массив байтов. Этот метод сначала считывает все отложенные байты; после этого, если было прочитано меньше, чем len байта, он считывает из основного потока ввода. Если len не равно нулю, метод блокируется до тех пор, пока не станет доступен как минимум 1 байт ввода; в противном случае байты не читаются и возвращается 0.
Overrides:
read в классе FilterInputStream
Parameters:
b - буфер, в который считываются данные.
off - начальный смещение в целевом массиве b
len - максимальное число считанных байтов.
Returns:
общее количество байтов, считанных в буфер, или -1, если больше нет данных, потому что достигнут конец потока.
Throws:
NullPointerException - Если b равно null.
IndexOutOfBoundsException - Если off отрицательно, len отрицательно или len больше, чем b.length - off
IOException - если этот поток ввода был закрыт путём вызова его метода close() или произошла ошибка ввода-вывода.
See Also:
  • InputStream.read(byte[], int, int)

unread

public void unread(int b) throws IOException
Возвращает байт, копируя его в начало буфера сдвига. После возврата этого метода, следующий считываемый байт будет иметь значение (byte)b.
Parameters:
b - значение int, чей младший байт должен быть возвращен.
Throws:
IOException - Если в буфере сдвига недостаточно места для байта или этот поток ввода был закрыт вызовом его метода close().

unread

public void unread(byte[] b, int off, int len) throws IOException
Возвращает часть массива байтов, копируя её в начало буфера сдвига. После возврата этого метода, следующий считываемый байт будет иметь значение b[off], байт после него будет иметь значение b[off+1] и так далее.
Parameters:
b - массив байтов, возвращаемых в буфер.
off - начальное смещение данных.
len - количество байтов, возвращаемых в буфер.
Throws:
NullPointerException - Если b равно null.
IOException - Если в буфере сдвига недостаточно места для указанного числа байтов или этот поток ввода был закрыт вызовом его метода close().
Since:
1.1

unread

public void unread(byte[] b) throws IOException
Возвращает массив байтов, копируя его в начало буфера сдвига. После возврата этого метода, следующий считываемый байт будет иметь значение b[0], байт после него будет иметь значение b[1] и так далее.
Parameters:
b - массив байтов, возвращаемых в буфер.
Throws:
NullPointerException - Если b равно null.
IOException - Если в буфере сдвига недостаточно места для указанного числа байтов или этот поток ввода был закрыт путём вызова его метода close().
Since:
1.1

available

public int available() throws IOException
Возвращает оценку числа байтов, которые могут быть считанны (или пропущены) из этого потока ввода без блокировки до следующего вызова метода для этого потока ввода. Следующий вызов может быть от того же потока или другого потока. Один считывание или пропуск такого количества байтов не будет заблокирован, но может прочитать или пропустить меньше байтов.

Метод возвращает сумму числа байтов, которые были отложены, и значения, возвращаемого методом available.

Overrides:
available в классе FilterInputStream
Returns:
число байтов, которые могут быть считанны (или пропущены) из потока ввода без блокировки.
Throws:
IOException - если этот поток ввода был закрыт путём вызова его метода close() или произошла ошибка ввода-вывода.
See Also:
  • FilterInputStream.in
  • InputStream.available()

skip

public long skip(long n) throws IOException
Пропускает и отбрасывает n байтов данных из этого потока ввода. Метод skip может по различным причинам закончить пропуском меньшего количества байтов, возможно, нуля. Если n отрицательно, байты не пропускаются.

Метод skip класса PushbackInputStream сначала пропускает байты в буфере сдвига, если таковые имеются. Затем он вызывает метод skip основного потока ввода, если необходимо пропустить больше байтов. Возвращается фактическое количество пропущенных байтов.

Overrides:
skip в классе FilterInputStream
Parameters:
n - количество байтов, которые нужно пропустить.
Returns:
фактическое количество пропущенных байтов.
Throws:
IOException - если поток был закрыт вызовом метода close(), in.skip(n) выбросил исключение IOException или произошла ошибка ввода-вывода.
Since:
1.2
See Also:
  • FilterInputStream.in
  • InputStream.skip(long n)

markSupported

public boolean markSupported()
Проверяет, поддерживает ли этот поток ввода методы mark и reset, чего он не делает.
Overrides:
markSupported в классе FilterInputStream
Returns:
false, так как этот класс не поддерживает методы mark и reset.
See Also:
  • InputStream.mark(int)
  • InputStream.reset()

mark

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

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

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

reset

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

Метод reset для класса PushbackInputStream ничего не делает, кроме как выбросить исключение IOException.

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

close

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/io/PushbackInputStream.html

Spec-Zone.ru

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