鴻蒙OS PipedInputStream

2022-10-24 10:59 更新

PipedInputStream

java.lang.Object

|---java.io.InputStream

|---|---java.io.PipedInputStream

public class PipedInputStream
extends InputStream

管道輸入流應該連接到管道輸出流; 然后,管道輸入流提供寫入管道輸出流的任何數(shù)據(jù)字節(jié)。 通常,數(shù)據(jù)由一個線程從 PipedInputStream 對象讀取,數(shù)據(jù)由其他線程寫入相應的 PipedOutputStream。 不建議嘗試從單個線程中使用這兩個對象,因為它可能會使線程死鎖。 管道輸入流包含一個緩沖區(qū),在限制范圍內(nèi)將讀取操作與寫入操作分離。 如果向連接的管道輸出流提供數(shù)據(jù)字節(jié)的線程不再活動,則稱該管道已損壞。

Since:

JDK1.0

字段摘要

修飾符和類型 字段 描述
protected byte[] buffer 放置傳入數(shù)據(jù)的循環(huán)緩沖區(qū)。
protected int in 當從連接的管道輸出流接收時,循環(huán)緩沖區(qū)中將存儲下一個字節(jié)數(shù)據(jù)的位置的索引。
protected int out 此管道輸入流將讀取下一個數(shù)據(jù)字節(jié)的循環(huán)緩沖區(qū)中位置的索引。
protected static int PIPE_SIZE 管道的循環(huán)輸入緩沖區(qū)的默認大小。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
PipedInputStream() 創(chuàng)建一個 PipedInputStream 以便它尚未連接。
PipedInputStream(int pipeSize) 創(chuàng)建一個 PipedInputStream 以便它尚未連接并使用指定的管道大小作為管道緩沖區(qū)。
PipedInputStream(PipedOutputStream src) 創(chuàng)建一個 PipedInputStream 以便它連接到管道輸出流 src。
PipedInputStream(PipedOutputStream src, int pipeSize) 創(chuàng)建一個 PipedInputStream 以便它連接到管道輸出流 src 并為管道緩沖區(qū)使用指定的管道大小。

方法總結(jié)

修飾符和類型 方法 描述
int available() 返回可以不阻塞地從此輸入流中讀取的字節(jié)數(shù)。
void close() 關(guān)閉此管道輸入流并釋放與該流關(guān)聯(lián)的任何系統(tǒng)資源。
void connect(PipedOutputStream src) 導致此管道輸入流連接到管道輸出流 src。
int read() 從此管道輸入流中讀取數(shù)據(jù)的下一個字節(jié)。
int read(byte[] b, int off, int len) 從此管道輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。
protected void receive(int b) 接收一個字節(jié)的數(shù)據(jù)。
從類 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

管道的循環(huán)輸入緩沖區(qū)的默認大小。

Since:

JDK1.1

buffer

protected byte[] buffer

放置傳入數(shù)據(jù)的循環(huán)緩沖區(qū)。

Since:

JDK1.1

in

protected int in

當從連接的管道輸出流接收時,循環(huán)緩沖區(qū)中將存儲下一個字節(jié)數(shù)據(jù)的位置的索引。 in<0 表示緩沖區(qū)為空,in==out 表示緩沖區(qū)已滿

Since:

JDK1.1

out

protected int out

此管道輸入流將讀取下一個數(shù)據(jù)字節(jié)的循環(huán)緩沖區(qū)中位置的索引。

Since:

JDK1.1

構(gòu)造函數(shù)詳細信息

PipedInputStream

public PipedInputStream(PipedOutputStream src) throws IOException

創(chuàng)建一個 PipedInputStream 以便它連接到管道輸出流 src。 然后,寫入 src 的數(shù)據(jù)字節(jié)將可用作此流的輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
src 要連接的流。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

PipedInputStream

public PipedInputStream(PipedOutputStream src, int pipeSize) throws IOException

創(chuàng)建一個 PipedInputStream 以便它連接到管道輸出流 src 并為管道緩沖區(qū)使用指定的管道大小。 然后,寫入 src 的數(shù)據(jù)字節(jié)將可用作此流的輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
src 要連接的流。
pipeSize 管道緩沖區(qū)的大小。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。
IllegalArgumentException 如果管道大小 <= 0。

Since:

1.6

PipedInputStream

public PipedInputStream()

創(chuàng)建一個 PipedInputStream 以便它尚未連接。 在使用之前,它必須連接到 PipedOutputStream。

PipedInputStream

public PipedInputStream(int pipeSize)

創(chuàng)建一個 PipedInputStream 以便它尚未連接并使用指定的管道大小作為管道緩沖區(qū)。 在使用之前,它必須連接到 PipedOutputStream。

參數(shù):

參數(shù)名稱 參數(shù)描述
pipeSize 管道緩沖區(qū)的大小。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 pipeSize <= 0.

Since:

1.6

方法詳情

connect

public void connect(PipedOutputStream src) throws IOException

導致此管道輸入流連接到管道輸出流 src。 如果此對象已連接到其他管道輸出流,則會引發(fā) IOException。

如果 src 是一個未連接的管道輸出流并且 snk 是一個未連接的管道輸入流,它們可以通過以下任一調(diào)用連接:

snk.connect(src) 

或調(diào)用:

src.connect(snk) 

這兩個調(diào)用具有相同的效果。

參數(shù):

參數(shù)名稱 參數(shù)描述
src 要連接的管道輸出流。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

receive

protected void receive(int b) throws IOException

接收一個字節(jié)的數(shù)據(jù)。 如果沒有可用的輸入,此方法將阻塞。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 正在接收的字節(jié)

Throws:

Throw名稱 Throw描述
IOException 如果管道損壞、未連接、關(guān)閉或發(fā)生 I/O 錯誤。

Since:

JDK1.1

read

public int read() throws IOException

從此管道輸入流中讀取數(shù)據(jù)的下一個字節(jié)。 值字節(jié)以 0 到 255 范圍內(nèi)的 int 形式返回。此方法阻塞,直到輸入數(shù)據(jù)可用、檢測到流結(jié)束或引發(fā)異常。

指定者:

讀入類 InputStream

返回:

數(shù)據(jù)的下一個字節(jié),如果到達流的末尾,則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果管道未連接、損壞、關(guān)閉或發(fā)生 I/O 錯誤。

read

public int read(byte[] b, int off, int len) throws IOException

從此管道輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。 如果到達數(shù)據(jù)流的末尾或 len 超過管道的緩沖區(qū)大小,則將讀取少于 len 個字節(jié)。 如果 len 為零,則不讀取任何字節(jié)并返回 0; 否則,該方法將阻塞,直到至少有 1 個字節(jié)的輸入可用、檢測到流結(jié)束或拋出異常。

覆蓋:

讀入類 InputStream

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 目標數(shù)組 b 中的起始偏移量
len 讀取的最大字節(jié)數(shù)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于到達流的末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 b 為空。
IndexOutOfBoundsException 如果 off 為負數(shù),len 為負數(shù),或者 len 大于 b.length - off
IOException 如果管道損壞、未連接、關(guān)閉或發(fā)生 I/O 錯誤。

available

public int available() throws IOException

返回可以不阻塞地從此輸入流中讀取的字節(jié)數(shù)。

覆蓋:

在類 InputStream 中可用

返回:

可以在不阻塞的情況下從此輸入流中讀取的字節(jié)數(shù),如果此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者管道未連接或損壞,則為 0。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

Since:

JDK1.0.2

close

public void close() throws IOException

關(guān)閉此管道輸入流并釋放與該流關(guān)聯(lián)的任何系統(tǒng)資源。

指定者:

在接口 AutoCloseable 中關(guān)閉

指定者:

在接口Closeable中關(guān)閉

覆蓋:

在類 InputStream 中關(guān)閉

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號