Класс PipedInputStream
java.lang.Object
java.io.InputStream
java.io.PipedInputStream
- Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class PipedInputStream extends InputStream
Входной поток канала должен быть соединен с выходным потоком канала; после этого входной поток канала предоставляет все байты данных, записанные в выходной поток канала. Обычно один поток считывает данные из объекта
PipedInputStream, а другой поток записывает данные в соответствующий объект PipedOutputStream. Не рекомендуется использовать оба объекта из одного потока, поскольку это может привести к его взаимной блокировке. Входной поток канала содержит буфер, который в определенных пределах отделяет операции чтения от операций записи. Канал считается поврежденным , если поток, передававший байты данных в соединенный с ним выходной поток канала, больше не активен.- Начиная с версии:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buffer |
Кольцевой буфер, в который помещаются входящие данные. |
protected int |
in |
Индекс позиции в кольцевом буфере, в которой будет сохранен следующий байт данных, полученный из соединенного выходного потока канала. |
protected int |
out |
Индекс позиции в кольцевом буфере, из которой этот входной поток канала прочитает следующий байт данных. |
protected static final int |
PIPE_SIZE |
Размер кольцевого буфера ввода канала по умолчанию. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PipedInputStream() |
Создает PipedInputStream, который еще не соединен. |
PipedInputStream |
Создает PipedInputStream, который еще не соединен, и задает указанный размер буфера канала. |
PipedInputStream |
Создает PipedInputStream, соединенный с выходным потоком канала src. |
PipedInputStream |
Создает PipedInputStream, соединенный с выходным потоком канала src, и задает указанный размер буфера канала. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает количество байтов, которые можно прочитать из этого входного потока без блокировки. |
void |
close() |
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним. |
void |
connect |
Соединяет этот входной поток канала с выходным потоком канала src. |
int |
read() |
Читает следующий байт данных из этого входного потока канала. |
int |
read |
Читает до len байтов данных из этого входного потока канала в массив байтов. |
protected void |
receive |
Получает байт данных. |
Методы, объявленные в классе InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
Подробное описание полей
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
Создает
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
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, закрыт или произошла ошибка ввода-вывода. - Начиная с версии:
- 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, закрыт или произошла ошибка ввода-вывода. - См. также:
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, 2025, 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/25/docs/api/java.base/java/io/PipedInputStream.html