Spec-Zone.ru › OpenJDK 17

Класс PushbackInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.PushbackInputStream
Все реализованные интерфейсы:
Closeable, AutoCloseable
public class PushbackInputStream extends FilterInputStream
Класс PushbackInputStream добавляет функциональность к другому потоку ввода, а именно возможность "повторного чтения" (или "push back") байтов, сохраняя их в внутренеём буфере. Это полезно в ситуациях, когда фрагмент кода удобно читать неопределённое количество байтов данных, ограниченных определённым значением байта; после чтения завершающего байта фрагмент кода может "повторно прочитать" его, чтобы следующая операция чтения потока ввода прочитала байт, который был "повторно прочитан". Например, байты, представляющие символы, составляющие идентификатор, могут быть завершены байтом, представляющим символ оператора; метод, задача которого — прочитать только идентификатор, может читать, пока не увидит оператор, а затем "повторно прочитать" оператор, чтобы его можно было прочитать повторно.
С тех пор как:
1.0

Краткое описание полей

Модификатор и тип Поле Описание
protected byte[] buf
Буфер повторного чтения.
protected int pos
Позиция в буфере повторного чтения, с которой будет считан следующий байт.

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

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)
Возвращает байт, копируя его в начало буфера повторного чтения.

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

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

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

reset

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

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

Overrides:
reset в классе FilterInputStream
Throws:
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
Throws:
IOException - если произошла ошибка ввода-вывода.
См. также:
  • FilterInputStream.in

© 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

Spec-Zone.ru

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