Spec-Zone.ru › OpenJDK 21

Класс 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
Возвращает оценку количества байтов, которые можно прочитать (или пропустить) из этого потока ввода без блокировки следующим вызовом метода для этого потока ввода. Следующий вызов может быть той же или другой нитью. Один вызов read или skip с таким количеством байтов не будет блокировать, но может прочитать или пропустить меньше байтов.

Метод возвращает сумму количества байтов, которые были возвращены в буфер отката, и значение, возвращённое методом 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)
Помечает текущую позицию в этом потоке ввода.

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

Overrides:
mark в классе FilterInputStream
Parameters:
readlimit - максимальное ограничение байтов, которые могут быть прочитаны, прежде чем метка позиции станет недействительной.
See Also:
  • 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

© 1993, 2023, 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/21/docs/api/java.base/java/io/PushbackInputStream.html

Spec-Zone.ru

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