Класс 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 |
Получает байт данных. |
Методы, объявленные в классе java.io.InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
Подробное описание полей
PIPE_SIZE
protected static final int PIPE_SIZE
Размер буфера кругового ввода по умолчанию для трубы.
- Since:
- 1.1
- См. также:
buffer
protected byte[] buffer
Круговой буфер, в который помещаются входящие данные.
- Since:
- 1.1
in
protected int in
Индекс позиции в круговом буфере, куда будет записан следующий байт данных при получении их от подключенного потока вывода.
in < 0 означает, что буфер пуст, in == out означает, что буфер заполнен- Since:
- 1.1
out
protected int out
Индекс позиции в круговом буфере, из которой следующий байт данных будет прочитан этим потоком ввода.
- Since:
- 1.1
Подробное описание конструкторов
PipedInputStream
public PipedInputStream(PipedOutputStream src) throws IOException
Создаёт поток ввода, подключённый к потоку вывода
src. Байты данных, записанные в src, будут доступны как ввод из этого потока.- Parameters:
-
src- поток для подключения. - Throws:
-
IOException- если произошла ошибка ввода-вывода.
PipedInputStream
public PipedInputStream(PipedOutputStream src, int pipeSize) throws IOException
Создаёт поток ввода, подключённый к потоку вывода
src и использующий указанный размер трубы для буфера. Байты данных, записанные в src, будут доступны как ввод из этого потока.- Parameters:
-
src- поток для подключения. -
pipeSize- размер буфера трубы. - Throws:
-
IOException- если произошла ошибка ввода-вывода. -
IllegalArgumentException- еслиpipeSize <= 0. - Since:
- 1.6
PipedInputStream
public PipedInputStream()
PipedInputStream
public PipedInputStream(int pipeSize)
Создаёт поток ввода, который пока не подключён и использует указанный размер трубы для буфера. Он должен быть подключён к потоку вывода
PipedOutputStream перед использованием.- Parameters:
-
pipeSize- размер буфера трубы. - Throws:
-
IllegalArgumentException- еслиpipeSize <= 0. - Since:
- 1.6
Подробное описание методов
connect
public void connect(PipedOutputStream src) throws IOException
Подключает этот поток ввода к потоку вывода
src. Если этот объект уже подключен к другому потоку вывода, выбрасывается IOException. Если src это не подключенный поток вывода, а snk это не подключенный поток ввода, их можно подключить либо с помощью вызова:
snk.connect(src) или с помощью вызова:
src.connect(snk) Эти два вызова имеют одинаковый эффект.
- Parameters:
-
src- Поток вывода для подключения. - Throws:
-
IOException- если произошла ошибка ввода-вывода.
receive
protected void receive(int b) throws IOException
Получает байт данных. Этот метод будет блокироваться, если ввод недоступен.
- Parameters:
-
b- получаемый байт - Throws:
-
IOException- Если трубаbroken,unconnected, закрыта, или если произошла ошибка ввода-вывода. - Since:
- 1.1
read
public int read() throws IOException
Читает следующий байт данных из этого потока ввода. Значение байта возвращается как
int в диапазоне от 0 до 255. Этот метод блокируется, пока данные ввода недоступны, не будет обнаружен конец потока или не будет выброшено исключение.- Specified by:
-
readв классеInputStream - Returns:
- следующий байт данных или
-1если достигнут конец потока. - Throws:
-
IOException- если трубаunconnected,broken, закрыта или произошла ошибка ввода-вывода.
read
public int read(byte[] b, int off, int len) throws IOException
Читает до
len байтов данных из этого потока ввода в массив байтов. Меньше чем len байтов будет считано, если достигнут конец потока данных или если len превышает размер буфера трубы. Если len равно нулю, то байты не считываются, и возвращается 0; в противном случае метод блокируется, пока не будет доступен хотя бы 1 байт ввода, не будет обнаружен конец потока или не будет выброшено исключение.- Overrides:
-
readв классеInputStream - Parameters:
-
b- буфер, в который считываются данные. -
off- начальный смещение в целевом массивеb -
len- максимальное количество считываемых байтов. - Returns:
- общее количество байтов, считанных в буфер, или
-1если больше нет данных, так как достигнут конец потока. - Throws:
-
NullPointerException- Еслиbравноnull. -
IndexOutOfBoundsException- Еслиoffотрицательно,lenотрицательно илиlenбольше чемb.length - off -
IOException- если трубаbroken,unconnected, закрыта или произошла ошибка ввода-вывода. - См. также:
available
public int available() throws IOException
Возвращает количество байтов, которые можно прочитать из этого потока ввода без блокировки.
- Overrides:
-
availableв классеInputStream - Returns:
- количество байтов, которые можно прочитать из этого потока ввода без блокировки, или
0если этот поток ввода был закрыт, вызвав методclose(), или если трубаunconnected, илиbroken. - Throws:
-
IOException- если произошла ошибка ввода-вывода. - Since:
- 1.0.2
close
public void close() throws IOException
Закрывает этот поток ввода и освобождает все системные ресурсы, связанные с потоком.
- Specified by:
-
closeв интерфейсеAutoCloseable - Specified by:
-
closeв интерфейсеCloseable - Overrides:
-
closeв классеInputStream - Throws:
-
IOException- если произошла ошибка ввода-вывода.
© 1993, 2021, 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/17/docs/api/java.base/java/io/PipedInputStream.html