Spec-Zone.ru › OpenJDK 8

Класс PushbackInputStream

  • java.lang.Object
    • java.io.InputStream
      • java.io.FilterInputStream
        • java.io.PushbackInputStream
Все реализованные интерфейсы:
Closeable, AutoCloseable

public class PushbackInputStream
extends FilterInputStream

Класс PushbackInputStream добавляет функциональность к другому потоку ввода, а именно возможность «возврата» или «перечитывания» одного байта. Это полезно в ситуациях, когда удобно для фрагмента кода читать неопределённое количество байтов данных, ограниченных определённым значением байта; после чтения завершающего байта фрагмент кода может «вернуть» его обратно, чтобы следующая операция чтения из потока ввода повторно прочитала байт, который был возвращён. Например, байты, представляющие символы, образующие идентификатор, могут завершаться байтом, представляющим символ оператора; метод, задача которого — прочитать только идентификатор, может читать, пока не увидит оператор, а затем вернуть оператор, чтобы его перечитать.

С тех пор:
JDK1.0

Поля

Модификатор и тип Поле и описание
protected byte[] buf

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

protected int pos

Позиция в буфере возврата, с которой будет читаться следующий байт.

Поля, унаследованные от класса java.io.FilterInputStream

in

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

Конструктор и описание
PushbackInputStream(InputStream in)

Создаёт PushbackInputStream и сохраняет его аргумент, поток ввода 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.lang.Object

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

Поля

buf

protected byte[] buf

Буфер для отката.

С момента:
JDK1.1

pos

protected int pos

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

С момента:
JDK1.1

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

PushbackInputStream

public PushbackInputStream(InputStream in,
                           int size)

Создаёт PushbackInputStream с буфером для отката заданного size, и сохраняет его аргумент, поток ввода in, для последующего использования. Изначально нет байта для отката (поле pushBack инициализируется значением -1).

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

PushbackInputStream

public PushbackInputStream(InputStream in)

Создаёт PushbackInputStream и сохраняет его аргумент, поток ввода in, для последующего использования. Изначально нет байта для отката (поле pushBack инициализируется значением -1).

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

Методы

read

public int read()
         throws IOException

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

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

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

read

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

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

Переопределяет:
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().
С момента:
JDK1.1

unread

public void unread(byte[] b)
            throws IOException

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

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

available

public int available()
              throws IOException

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

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

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

skip

public long skip(long n)
          throws IOException

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

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

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

markSupported

public boolean markSupported()

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

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

mark

public void mark(int readlimit)

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

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

Переопределяет:
mark в классе FilterInputStream
Параметры:
readlimit - максимальное ограничение байтов, которые можно прочитать, прежде чем метка позиции станет недействительной.
См. также:
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 в интерфейсе Closeable
Указано:
close в интерфейсе AutoCloseable
Переопределяет:
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.

Spec-Zone.ru

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