Класс PushbackInputStream
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable
public class PushbackInputStream extends FilterInputStream
PushbackInputStream добавляет функциональность к другому потоку ввода, а именно возможность "возврата" или "перечитывания" байтов, храня байты в внутренней буфер. Это полезно в ситуациях, когда фрагмент кода удобно читать неопределенное количество байтов данных, которые ограничены определенным значением байта; после чтения завершающего байта, фрагмент кода может его "перечитать", чтобы следующее операция чтения на потоке ввода перечитала байт, который был возвращен назад. Например, байты, представляющие символы, составляющие идентификатор, могут завершаться байтом, представляющим символ оператора; метод, задача которого – прочитать только идентификатор, может читать, пока не увидит оператор, а затем вернуть оператор, чтобы его перечитать.- С тех пор как:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buf |
Буфер для возврата байтов. |
protected int |
pos |
Позиция в буфере возврата, с которой будет считываться следующий байт. |
Поля, объявленные в классе java.io.FilterInputStream
in
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PushbackInputStream |
Создает PushbackInputStream с буфером возврата размером 1 байт и сохраняет свой аргумент, поток ввода in, для последующего использования. |
PushbackInputStream |
Создает PushbackInputStream с буфером возврата заданного размера и сохраняет свой аргумент, поток ввода 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 |
Возвращает байт, копируя его в начало буфера возврата. |
Методы, объявленные в классе java.io.FilterInputStream
read
Методы, объявленные в классе java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Подробное описание полей
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:
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:
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:
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:
markSupported
public boolean markSupported()
mark и reset, чего он не делает.- Overrides:
-
markSupportedв классеFilterInputStream - Returns:
-
false, так как этот класс не поддерживает методыmarkиreset. - See Also:
mark
public void mark(int readlimit)
Метод PushbackInputStream класса PushbackInputStream ничего не делает.
- Overrides:
-
markв классеFilterInputStream - Параметры:
-
readlimit- максимальный предел байтов, которые могут быть прочитаны, прежде чем позиция метки станет недействительной. - См. также:
reset
public void reset() throws IOException
mark для этого потока ввода. Метод reset для класса PushbackInputStream ничего не делает, кроме как выбросить исключение IOException.
- Overrides:
-
resetв классеFilterInputStream - Исключения:
-
IOException- если этот метод вызван. - См. также:
close
public void close() throws IOException
- Specified by:
-
closeв интерфейсеAutoCloseable - Specified by:
-
closeв интерфейсеCloseable - Overrides:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/io/PushbackInputStream.html