管道流間的通訊

大雄45發表於2021-11-18
導讀 在應用程式中使用PipedInputStream類與PipedOutputStream類來建立管道之間的通訊,一個PipedInputStream例項化物件和一個PipedOutputStream例項化物件進行連線產生一個通訊管道。
前言

在應用程式中使用PipedInputStream類與PipedOutputStream類來建立管道之間的通訊,一個PipedInputStream例項化物件和一個PipedOutputStream例項化物件進行連線產生一個通訊管道。PipedInputStream用來從管道中讀取寫入的資料,PipedOutputStream是向管道中寫入資料。透過執行緒之間的通訊使用PipedInputStream類與PipedOutputStream類。使用PipedInputStream類與PipedOutputStream類學習管道流之間的通訊。接下來小編帶大家一起來學習!

一、PipedInputStream類

1.PipedInputStream類管道輸入流,它是可以連線管道輸出流,管道輸入流提供了要寫入管道輸出流的所有資料的位元組。

2.PipedInputStream類構造方法:

(1)public PipedInputStream():建立管道輸入流物件,這個物件它尚未連線。

(2)public PipedInputStream(PipedOutputStream out):建立一個管道輸入流,它被連線到引數out指定的管道輸出流。如下所示:

PipedInputStream pis=new PipedInputStream();

3.PipedInputStream類方法有:

(1)int read():讀取資料的下一個位元組。

(2)int read(byte []b,int off,int len):讀取len個位元組資料到一個位元組陣列,off參數列示偏移量,len表示讀取資料的長度。

(3)void receive(int b):接受一個位元組的資料。

(4)void connect(PipedOutputStream src):表示管道輸入流連線到管道輸出流src

(5)int available():表示沒有什麼阻礙從輸入流中讀取位元組數。

(6)void close():表示關閉流。

二、PipedOutputStream類

1.PipedOutputStream類是管道輸出流,它是可以用於向管道中寫入資料。

2.PipedOutputStream類構造方法:

(1)public PipedOutputStream():建立管道輸出流物件,這個物件它尚未連線。

(2)public PipedOutputStream(PipedInputStream in):建立一個管道輸出流,它被連線到引數in指定的管道輸入流。如下所示:

PipedOutputStream pos=new PipedOutputStream();

3.PipedOutputStream類方法有:

(1)void close():表示關閉流。

(2)void connect(PipedInputStream snk):表示管道輸出流連線到管道輸入流中。

(3)void flush():重新整理輸出流並強制的寫出任何緩衝的輸出位元組。

(4)void write(int b):寫入指定位元組到管道輸出流。

(5)void write(byte [] b,int off,int len):寫入len個位元組的指定位元組陣列從偏移量off開始到管道輸出流。

三、使用PipedInputStream類與PipedOutputStream類學習管道流之間的通訊案例

1.程式碼實現:

import java.io.*; 
 
public class P22 { 
public static void main(String[] args) throws Exception { 
//建立PipedInputStream物件 
final PipedInputStream in=new PipedInputStream(); 
final PipedOutputStream out=new PipedOutputStream(); 
//兩個類進行連線 
in.connect(out); 
new Thread(new Runnable(){ 
        public void run(){ 
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
            //透過鍵盤讀取資料寫入管道流 
            PrintStream ps=new PrintStream(out); 
            System.out.print(Thread.currentThread().getName()+"請輸入內容:"); 
            try { 
                ps.println(br.readLine()); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 
},"傳送資料的執行緒").start(); 
new Thread(new Runnable(){ 
        public void run(){ 
            BufferedReader br=new BufferedReader(new InputStreamReader(in)); 
            try { 
                System.out.println(Thread.currentThread().getName()+"收到的內容:"+br.readLine()); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 
},"接受資料的執行緒").start(); 
  } 
}

執行的結果如下圖所示:

管道流間的通訊管道流間的通訊

上面程式碼中使用一個PipedInputStream物件和一個PipedOutputStream物件進行連線產生一個通訊管道。,寫兩個執行緒,一個執行緒用於鍵盤輸入的資料管道輸出流,另一個執行緒用來管道讀取寫入的資料。使用這兩個類來實現執行緒之間的通訊。

四、總結

本文主要介紹了PipedInputStream類、PipedOutputStream類、使用PipedInputStream類與PipedOutputStream類學習管道流之間的通訊。PipedInputStream類管道輸入流,它是可以連線管道輸出流,管道輸入流提供了要寫入管道輸出流的所有資料的位元組。PipedInputStream介紹了它的構造方法和方法。PipedOutputStream類是管道輸出流,它是可以用於向管道中寫入資料。PipedOutputStream介紹了它的構造方法和方法。使用PipedInputStream類與PipedOutputStream類學習管道流之間的通訊。希望大家透過本文的學習,對你有所幫助!

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2842832/,如需轉載,請註明出處,否則將追究法律責任。

相關文章