Mega Code Archive

 
Categories / Java / File Input Output
 

Test PipedInputStream and PipedOutputStream with Thread

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; public class TestPipes {   public static void writeData(OutputStream os) {     try {       DataOutputStream out = new DataOutputStream(new BufferedOutputStream(os));       int[] numArray = { 1, 2, 3, 4, 5 };       for (int i = 0; i < numArray.length; i++) {         out.writeInt(numArray[i]);       }       out.flush();       out.close();     } catch (IOException e) {       e.printStackTrace();     }   }   public static void readData(InputStream is) {     DataInputStream in = new DataInputStream(new BufferedInputStream(is));     boolean eof = false;     try {       while (!eof) {           int iValue = in.readInt();           System.out.println("read value = " + iValue);       }     } catch (IOException e) {       e.printStackTrace();     }     System.out.println("End of Data");   }   public static void main(String[] args) throws Exception {     final PipedOutputStream pos = new PipedOutputStream();     final PipedInputStream pis = new PipedInputStream(pos);     Runnable runOutput = new Runnable() {       public void run() {         writeData(pos);       }     };     Thread outThread = new Thread(runOutput, "outThread");     outThread.start();     Runnable runInput = new Runnable() {       public void run() {         readData(pis);       }     };     Thread inThread = new Thread(runInput, "inThread");     inThread.start();   } }