Spec-Zone .ru
спецификации, руководства, описания, API
|
public class PushbackInputStream extends FilterInputStream
PushbackInputStream
добавляет функциональность к другому входному потоку, а именно, возможность "пододвинуть обратно" или "непрочитанный" один байт. Это полезно в ситуациях, где удобно для фрагмента кода считать неопределенное число байтов данных, которые разграничиваются определенным значением байта; после чтения завершающегося байта фрагмент кода может "непрочитанный" это, так, чтобы следующая операция чтения на входном потоке перечитала байт, который был пододвинут обратно. Например, байты, представляющие символы, составляющие идентификатор, могли бы быть завершены байтом, представляющим символ оператора; метод, задание которого должно считать только идентификатор, может читать, пока это не видит оператор, и затем продвиньте оператор назад быть перечитанным.Модификатор и Тип | Поле и Описание |
---|---|
protected byte[] |
buf
Буфер pushback.
|
protected int |
на месте продажи
Позиция в пределах pushback буферизует, из которого будет считан следующий байт.
|
в
Конструктор и Описание |
---|
PushbackInputStream(InputStream in)
Создает a
PushbackInputStream и сохраняет его параметр, входной поток in , для более позднего использования. |
PushbackInputStream(InputStream in, int size)
Создает a
PushbackInputStream с pushback буфером указанного 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)
Пододвигает массив обратно байтов, копируя это в переднюю сторону буфера pushback.
|
void |
unread(byte[] b, int off, int len)
Пододвигает часть обратно массива байтов, копируя это в переднюю сторону буфера pushback.
|
void |
unread(int b)
Пододвигает байт обратно, копируя это в переднюю сторону буфера pushback.
|
читать
protected byte[] buf
protected int pos
pos
равно buf.length
; когда буфер полон, pos
равно нулю.public PushbackInputStream(InputStream in, int size)
PushbackInputStream
с pushback буфером указанного size
, и сохраняет его параметр, входной поток in
, для более позднего использования. Первоначально, нет никакого назад продвинутого байта (поле pushBack
инициализируется к -1
).in
- входной поток, из которого будут считаны байты.size
- размер буфера pushback.IllegalArgumentException
- если размер <= 0public PushbackInputStream(InputStream in)
PushbackInputStream
и сохраняет его параметр, входной поток in
, для более позднего использования. Первоначально, нет никакого назад продвинутого байта (поле pushBack
инициализируется к -1
).in
- входной поток, из которого будут считаны байты.public int read() throws IOException
int
в диапазоне 0
к 255
. Если никакой байт не доступен, потому что конец потока был достигнут, значение -1
возвращается. Этот метод блоки до входных данных доступен, конец потока обнаруживается, или исключение выдается. Этот метод возвращает последний раз назад продвинутый байт, если есть один, и иначе вызывает read
метод его базового входного потока и возвратов безотносительно значения тот метод возвраты.
read
в классе FilterInputStream
-1
если конец потока был достигнут.IOException
- если этот входной поток был закрыт, вызывая close()
метод, или ошибка ввода-вывода происходит.InputStream.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)
public void unread(int b) throws IOException
(byte)b
.b
- int
оцените, чей байт младшего разряда должен быть пододвинут обратно.IOException
- Если есть недостаточно комнаты в буфере pushback для байта, или этот входной поток был закрыт, вызывая close()
метод.public void unread(byte[] b, int off, int len) throws IOException
b[off]
, байт после того, как у этого будет значение b[off+1]
, и т.д.b
- байтовый массив, чтобы пододвинуть обратно.off
- смещение запуска данных.len
- число байтов, чтобы пододвинуть обратно.IOException
- Если есть недостаточно комнаты в буфере pushback для конкретного количества байтов, или этот входной поток был закрыт, вызывая close()
метод.public void unread(byte[] b) throws IOException
b[0]
, байт после того, как у этого будет значение b[1]
, и т.д.b
- байтовый массив, чтобы пододвинуть обратноIOException
- Если есть недостаточно комнаты в буфере pushback для конкретного количества байтов, или этот входной поток был закрыт, вызывая close()
метод.public int available() throws IOException
Метод возвращает сумму числа байтов, которые были пододвинуты обратно и значение, возвращенное available
.
available
в классе FilterInputStream
IOException
- если этот входной поток был закрыт, вызывая close()
метод, или ошибка ввода-вывода происходит.FilterInputStream.in
, InputStream.available()
public long skip(long n) throws IOException
n
байты данных от этого входного потока. skip
метод, для множества причин, может закончить тем, что перескочил через некоторое меньшее число байтов, возможно обнулить. Если n
отрицательно, никакие байты не пропускаются. skip
метод PushbackInputStream
сначала перескакивает через байты в буфере pushback, если любой. Это тогда вызывает skip
метод базового входного потока, если больше байтов должно быть пропущено. Фактическое число пропущенных байтов возвращается.
skip
в классе FilterInputStream
n
- число байтов, которые будут пропущены.IOException
- если поток не поддерживает, ищут, или поток был закрыт, вызывая close()
метод, или ошибка ввода-вывода происходит.FilterInputStream.in
, InputStream.skip(long n)
public boolean markSupported()
mark
и reset
методы, которые это не делает.markSupported
в классе FilterInputStream
false
, так как этот класс не поддерживает mark
и reset
методы.InputStream.mark(int)
, InputStream.reset()
public void mark(int readlimit)
mark
метод PushbackInputStream
ничего не делает.
mark
в классе FilterInputStream
readlimit
- максимальный предел байтов, которые могут быть считаны перед позицией метки, становится недопустимым.InputStream.reset()
public void reset() throws IOException
mark
метод был последним, обращался к этому входному потоку. Метод reset
для класса PushbackInputStream
не делает ничего кроме броска IOException
.
reset
в классе FilterInputStream
IOException
- если этот метод вызывается.InputStream.mark(int)
, IOException
public void close() throws IOException
close
в интерфейсе Closeable
close
в интерфейсе AutoCloseable
close
в классе FilterInputStream
IOException
- если ошибка ввода-вывода происходит.FilterInputStream.in
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.