Класс PushbackInputStream
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable
public class PushbackInputStream extends FilterInputStream
PushbackInputStream добавляет функциональность к другому потоку ввода, а именно возможность "повторного чтения" (или "push back") байтов, сохраняя их в внутренеём буфере. Это полезно в ситуациях, когда фрагмент кода удобно читать неопределённое количество байтов данных, ограниченных определённым значением байта; после чтения завершающего байта фрагмент кода может "повторно прочитать" его, чтобы следующая операция чтения потока ввода прочитала байт, который был "повторно прочитан". Например, байты, представляющие символы, составляющие идентификатор, могут быть завершены байтом, представляющим символ оператора; метод, задача которого — прочитать только идентификатор, может читать, пока не увидит оператор, а затем "повторно прочитать" оператор, чтобы его можно было прочитать повторно.- С тех пор как:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buf |
Буфер повторного чтения. |
protected int |
pos |
Позиция в буфере повторного чтения, с которой будет считан следующий байт. |
Поля, объявленные в классе java.io.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 |
Возвращает байт, копируя его в начало буфера повторного чтения. |
Методы, объявленные в классе 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)
Метод mark класса PushbackInputStream ничего не делает.
- Overrides:
-
markв классеFilterInputStream - Parameters:
-
readlimit- максимальное ограничение байтов, которые могут быть прочитаны до того, как позиция метки станет недопустимой. - See Also:
reset
public void reset() throws IOException
mark был в последний раз вызван для этого потока ввода. Метод reset для класса PushbackInputStream ничего не делает, кроме как генерирует исключение IOException.
- Overrides:
-
resetв классеFilterInputStream - Throws:
-
IOException- если этот метод вызывается. - См. также:
close
public void close() throws IOException
- Specified by:
-
closeв интерфейсеAutoCloseable - Specified by:
-
closeв интерфейсеCloseable - Overrides:
-
closeв классеFilterInputStream - Throws:
-
IOException- если произошла ошибка ввода-вывода. - См. также:
© 1993, 2021, 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/17/docs/api/java.base/java/io/PushbackInputStream.html