Класс PipedInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.PipedInputStream
- Все реализуемые интерфейсы:
-
Closeable,AutoCloseable
public class PipedInputStream extends InputStream
Поток ввода «в трубе» должен быть подключён к потоку вывода «в трубе»; поток ввода «в трубе» затем предоставляет любые байты данных, которые записываются в поток вывода «в трубе». Как правило, данные считываются из объекта PipedInputStream одной нитью, а данные записываются в соответствующий объект PipedOutputStream другой нитью. Попытка использования обоих объектов из одной нити не рекомендуется, так как это может привести к тупику в нити. Поток ввода «в трубе» содержит буфер, который развязывает операции чтения от операций записи в пределах ограничений. Труба считается разрывной , если нить, которая предоставляла байты данных подключенному потоку вывода «в трубе», больше не активна.
- С:
- 1.0
- См. также:
PipedOutputStream
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] | buffer | Круговой буфер, в который помещаются входящие данные. |
protected int | in | Индекс позиции в круговом буфере, в котором будет храниться следующий байт данных при получении из подключенного потока вывода «в трубе». |
protected int | out | Индекс позиции в круговом буфере, из которого будет считать следующий байт данных этот поток ввода «в трубе». |
protected static int | PIPE_SIZE | Размер по умолчанию кругового буфера ввода трубы. |
Конструкторы
| Конструктор | Описание |
|---|---|
PipedInputStream() | Создаёт |
PipedInputStream(int pipeSize) | Создаёт |
PipedInputStream(PipedOutputStream src) | Создаёт |
PipedInputStream(PipedOutputStream src,
int pipeSize) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
int | available() | Возвращает количество байтов, которые могут быть прочитаны из этого потока ввода без блокировки. |
void | close() | Закрывает этот поток ввода «в трубе» и освобождает все системные ресурсы, связанные с потоком. |
void | connect(PipedOutputStream src) | Подключает этот поток ввода «в трубе» к потоку вывода «в трубе» |
int | read() | Читает следующий байт данных из этого потока ввода «в трубе». |
int | read(byte[] b,
int off,
int len) | Читает до |
protected void | receive(int b) | Принимает байт данных. |
Методы, объявленные в классе java.io.InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
PIPE_SIZE
protected static final int PIPE_SIZE
Размер буфера круговой очереди ввода трубы по умолчанию.
- С момента:
- 1.1
- См. также:
- Значения константных полей
buffer
protected byte[] buffer
Круговой буфер, в который помещаются входящие данные.
- С момента:
- 1.1
in
protected int in
Индекс позиции в круговом буфере, в которой будет храниться следующий байт данных при получении из подключенного потока вывода. in<0 означает, что буфер пуст, in==out означает, что буфер заполнен.
- С момента:
- 1.1
out
protected int out
Индекс позиции в круговом буфере, в которой этот поток ввода трубы будет считывать следующий байт данных.
- С момента:
- 1.1
Конструкторы
PipedInputStream
public PipedInputStream(PipedOutputStream src)
throws IOException Создает поток ввода трубы, который подключен к потоку вывода трубы src. Байты данных, записанные в src, будут доступны как входные данные из этого потока.
- Параметры:
-
src- поток, к которому необходимо подключиться. - Исключения:
-
IOException- если произошла ошибка ввода-вывода.
PipedInputStream
public PipedInputStream(PipedOutputStream src,
int pipeSize)
throws IOException Создает поток ввода трубы, который подключен к потоку вывода трубы src и использует указанный размер трубы для буфера трубы. Байты данных, записанные в src, будут доступны как входные данные из этого потока.
- Параметры:
-
src- поток, к которому необходимо подключиться. -
pipeSize- размер буфера трубы. - Исключения:
-
IOException- если произошла ошибка ввода-вывода. -
IllegalArgumentException- еслиpipeSize <= 0. - С момента:
- 1.6
PipedInputStream
public PipedInputStream()
Создает поток ввода трубы, который пока не подключен. Он должен быть подключен к потоку PipedOutputStream перед использованием.
PipedInputStream
public PipedInputStream(int pipeSize)
Создает поток ввода трубы, который пока не подключен и использует указанный размер трубы для буфера трубы. Он должен быть подключен к потоку PipedOutputStream перед использованием.
- Параметры:
-
pipeSize- размер буфера трубы. - Исключения:
-
IllegalArgumentException- еслиpipeSize <= 0. - С момента:
- 1.6
Методы
connect
public void connect(PipedOutputStream src)
throws IOException Подключает этот поток ввода трубы к потоку вывода трубы src. Если этот объект уже подключен к какому-либо другому потоку вывода трубы, выбрасывается IOException.
Если src является отключенным потоком вывода трубы, а snk является отключенным потоком ввода трубы, их можно подключить с помощью вызова:
snk.connect(src)
или вызова:
src.connect(snk)
Оба вызова имеют одинаковый эффект.
- Параметры:
-
src- Поток вывода трубы, к которому необходимо подключиться. - Исключения:
-
IOException- если произошла ошибка ввода-вывода.
receive
protected void receive(int b)
throws IOException Получает байт данных. Этот метод будет блокировать, если нет доступных входных данных.
- Параметры:
-
b- байт, который принимается - Исключения:
-
IOException- Если трубаbroken,unconnected, закрыта, или если произошла ошибка ввода-вывода. - С момента:
- 1.1
read
public int read()
throws IOException Читает следующий байт данных из этого потока ввода трубы. Значение байта возвращается как int в диапазоне от 0 до 255. Этот метод блокируется до тех пор, пока данные ввода не станут доступными, не будет обнаружен конец потока или не будет выброшено исключение.
- Указано в:
-
readв классеInputStream - Возвращает:
- следующий байт данных или
-1, если достигнут конец потока. - Исключения:
-
IOException- если трубаunconnected,broken, закрыта, или если произошла ошибка ввода-вывода.
read
public int read(byte[] b,
int off,
int len)
throws IOException Читает до len байтов данных из этого потока ввода трубы в массив байтов. Меньше len байтов будет считано, если достигнут конец потока данных или если len превышает размер буфера трубы. Если len равно нулю, то байты не читаются и возвращается 0; в противном случае метод блокируется до тех пор, пока не будет доступен хотя бы 1 байт входных данных, не будет обнаружен конец потока или не будет выброшено исключение.
- Переопределяет:
-
readв классеInputStream - Параметры:
-
b- буфер, в который читаются данные. -
off- начальный смещение в целевом массивеb -
len- максимальное количество считанных байтов. - Возвращает:
- общее количество байтов, прочитанных в буфер, или
-1если больше нет данных, потому что достигнут конец потока. - Исключения:
-
NullPointerException- Еслиbравноnull. -
IndexOutOfBoundsException- Еслиoffотрицательно,lenотрицательно илиlenбольше, чемb.length - off -
IOException- если трубаbroken,unconnected, закрыта, или если произошла ошибка ввода-вывода. - См. также:
InputStream.read()
available
public int available()
throws IOException Возвращает количество байтов, которые могут быть прочитаны из этого потока ввода без блокировки.
- Переопределяет:
-
availableв классеInputStream - Возвращает:
- количество байтов, которые могут быть прочитаны из этого потока ввода без блокировки, или
0если этот поток ввода был закрыт вызовом методаclose()или если трубаunconnected, илиbroken. - Исключения:
-
IOException- если произошла ошибка ввода-вывода. - С момента:
- 1.0.2
close
public void close()
throws IOException Закрывает этот поток ввода трубы и освобождает все системные ресурсы, связанные с потоком.
- Указано в:
-
closeв интерфейсеAutoCloseable - Указано в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеInputStream - Исключения:
-
IOException- если произошла ошибка ввода-вывода.
© 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/PipedInputStream.html