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