Класс 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 с буфером возврата указанного 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, transferTo

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

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

Поля

buf

protected byte[] buf

Буфер возврата.

С момента:
1.1

pos

protected int pos

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

С момента:
1.1

Конструкторы

PushbackInputStream

public PushbackInputStream(InputStream in,
                           int size)

Создаёт PushbackInputStream с буфером возврата указанного size, и сохраняет свой аргумент, поток ввода in, для дальнейшего использования. Изначально буфер возврата пуст.

Параметры:
in - поток ввода, из которого будут читаться байты.
size - размер буфера возврата.
Исключения:
IllegalArgumentException - если size <= 0
С момента:
1.1

PushbackInputStream

public PushbackInputStream(InputStream in)

Создаёт PushbackInputStream с буфером возврата размером 1 байт и сохраняет свой аргумент, поток ввода in, для дальнейшего использования. Изначально буфер возврата пуст.

Параметры:
in - поток ввода, из которого будут читаться байты.

Методы

read

public int read()
         throws IOException

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

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

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

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException

Считывает до len байтов данных из этого потока ввода в массив байтов. Этот метод сначала считывает все помещённые назад байты; после этого, если было прочитано меньше, чем len байтов, он считывает из базового потока ввода. Если len не равно нулю, метод блокируется до тех пор, пока не станет доступным хотя бы 1 байт ввода; в противном случае байты не считываются, и возвращается 0.

Overrides:
read в классе FilterInputStream
Параметры:
b - буфер, в который считываются данные.
off - начальный смещение в целевом массиве b
len - максимальное количество считываемых байтов.
Возвращает:
общее количество байтов, считанных в буфер, или -1, если больше нет данных, потому что достигнут конец потока.
Исключение:
NullPointerException - Если b равно null.
IndexOutOfBoundsException - Если off отрицательное, len отрицательное или len больше b.length - off.
IOException - если этот поток ввода был закрыт вызовом его метода close() или произошла ошибка ввода-вывода.
См. также:
InputStream.read(byte[], int, int)

unread

public void unread(int b)
            throws IOException

Возвращает байт путём его копирования в начало буфера обратной записи. После возвращения этого метода следующий считываемый байт будет иметь значение (byte)b.

Параметры:
b - значение int, низкоуровневый байт которого необходимо поместить назад.
Исключение:
IOException - если в буфере обратной записи нет достаточно места для байта или этот поток ввода был закрыт вызовом метода close().

unread

public void unread(byte[] b,
                   int off,
                   int len)
            throws IOException

Возвращает часть массива байтов путём копирования её в начало буфера обратной записи. После возвращения этого метода, следующий байт для чтения будет иметь значение b[off], байт после него будет иметь значение b[off+1], и так далее.

Параметры:
b - массив байтов для возврата.
off - начальный смещение данных.
len - количество байтов для возврата.
Исключение:
IOException - если в буфере обратной записи нет достаточно места для указанного количества байтов или этот поток ввода был закрыт вызовом метода close().
С:
1.1

unread

public void unread(byte[] b)
            throws IOException

Возвращает массив байтов путём его копирования в начало буфера обратной записи. После возвращения этого метода, следующий байт для чтения будет иметь значение b[0], байт после него будет иметь значение b[1], и так далее.

Параметры:
b - массив байтов для возврата
Исключение:
IOException - если в буфере обратной записи нет достаточно места для указанного количества байтов, или этот поток ввода был закрыт вызовом метода close().
С:
1.1

available

public int available()
              throws IOException

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

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

Overrides:
available в классе FilterInputStream
Возвращает:
количество байтов, которые можно прочитать (или пропустить) из потока ввода без блокировки.
Исключение:
IOException - если этот поток ввода был закрыт вызовом метода close() или произошла ошибка ввода-вывода.
См. также:
FilterInputStream.in, InputStream.available()

skip

public long skip(long n)
          throws IOException

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

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

Overrides:
skip в классе FilterInputStream
Параметры:
n - количество байтов для пропуска.
Возвращает:
фактическое количество пропущенных байтов.
Исключение:
IOException - если поток был закрыт вызовом метода close(), in.skip(n) выбросил исключение IOException или произошла ошибка ввода-вывода.
С:
1.2
См. также:
FilterInputStream.in, InputStream.skip(long n)

markSupported

public boolean markSupported()

Проверяет, поддерживает ли этот поток ввода методы mark и reset, чего он не делает.

Overrides:
markSupported в классе FilterInputStream
Возвращает:
false, так как этот класс не поддерживает методы mark и reset.
См. также:
InputStream.mark(int), InputStream.reset()

mark

public void mark(int readlimit)

Помечает текущую позицию в этом потоке ввода.

Метод mark класса 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. Закрытие уже закрытого потока не оказывает никакого влияния.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Overrides:
close в классе FilterInputStream
Исключение:
IOException - если произошла ошибка ввода-вывода.
См. также:
FilterInputStream.in

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

Spec-Zone .ru
спецификации, руководства, описания, API