Класс 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 разрушен , если поток, который предоставлял байты данных подключенному потоку вывода типа pipe, больше не существует. - С тех пор:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buffer |
Циклический буфер, в который помещаются входящие данные. |
protected int |
in |
Индекс позиции в циклическом буфере, в которой будет храниться следующий байт данных при получении его из подключенного потока вывода типа pipe. |
protected int |
out |
Индекс позиции в циклическом буфере, в которой будет считан следующий байт данных этим потоком ввода типа pipe. |
protected static final int |
PIPE_SIZE |
Размер буфера циклического ввода по умолчанию. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PipedInputStream() |
Создаёт объект PipedInputStream, который ещё не подключён. |
PipedInputStream |
Создаёт объект PipedInputStream, который ещё не подключён, и использует указанный размер pipe для буфера. |
PipedInputStream |
Создаёт объект PipedInputStream, подключённый к потоку вывода типа pipe src. |
PipedInputStream |
Создаёт объект PipedInputStream, подключённый к потоку вывода типа pipe src, и использует указанный размер pipe для буфера. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает количество байтов, которые могут быть прочитаны из этого потока ввода без блокировки. |
void |
close() |
Закрывает этот поток ввода и освобождает все системные ресурсы, связанные с потоком. |
void |
connect |
Подключает этот поток ввода типа pipe к потоку вывода типа pipe src. |
int |
read() |
Читает следующий байт данных из этого потока ввода типа pipe. |
int |
read |
Читает до len байтов данных из этого потока ввода типа pipe в массив байтов. |
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
Размер буфера круговой очереди ввода трубы по умолчанию.
- С момента:
- 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
public 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, 2023, 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/21/docs/api/java.base/java/io/PipedInputStream.html