Класс 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(InputStream in,
int size) Создаёт |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
int |
available() Возвращает оценку количества байтов, которые могут быть прочитаны (или пропущены) из этого потока ввода без блокирования до следующего вызова метода для этого потока ввода. |
void |
close() Закрывает этот поток ввода и освобождает все системные ресурсы, связанные с потоком. |
void |
mark(int readlimit) Помечает текущую позицию в этом потоке ввода. |
boolean |
markSupported() Проверяет, поддерживает ли этот поток ввода методы |
int |
read() Читает следующий байт данных из этого потока ввода. |
int |
read(byte[] b,
int off,
int len) Читает до |
void |
reset() Перемещает этот поток в позицию на момент последнего вызова метода |
long |
skip(long 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.