使用PipedOutputStream和PipedInputStream

来源:互联网 发布:差评最多的淘宝网店 编辑:程序博客网 时间:2024/06/05 17:48
package yerasel;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.EOFException;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 (EOFException e) {//e.printStackTrace();// EOF读到末尾会抛出异常,属于正常现象} catch (IOException e) {// TODO Auto-generated catch blocke.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();}}

原创粉丝点击