Piped 管道流的使用

来源:互联网 发布:新加坡手机网络制式 编辑:程序博客网 时间:2024/04/30 01:11
package namespace;import java.io.*;class Reader implements Runnable{private PipedInputStream reader;public Reader(PipedInputStream reader){this.reader= reader;}public void run(){int ch=0;//System.out.println("run");try {while((ch=reader.read())!=-1){System.out.print((char)ch);//System.out.println("reading...");}System.out.println("PipedInputStream Empty...");}catch(Exception ex){System.out.println(ex.toString());}}}class Writer implements Runnable{private PipedOutputStream writer;public Writer(PipedOutputStream writer){this.writer=writer;}public void run(){try {for(int i=0;i<5;i++){writer.write("www.goole.com".getBytes());Thread.sleep(1000);}}catch(Exception ex){System.out.println(ex);}}}public class PipedStreamDemo {public static void main(String args[]) throws IOException{/*PipedInputStream pipedreader =new PipedInputStream();PipedOutputStream pipedwriter = new PipedOutputStream();try{pipedwriter.connect(pipedreader);}catch(IOException ex){System.out.println(ex.toString());}Reader reader = new Reader(pipedreader);Writer writer = new Writer(pipedwriter);Thread t1 = new Thread(reader);Thread t2 = new Thread(writer);t2.start();t1.start();*/piped();}public static void pipedConnet()    //测试将两个管理写在一个纯种里面的出线的问题,由于PipedInputStream 内部缓冲1024,满了就会造成等待{PipedInputStream pipedin = new PipedInputStream();PipedOutputStream pipedout = new PipedOutputStream();try{pipedout.connect(pipedin);for(int i=0;i<100;i++){System.out.println("数据写入中..."+i);pipedout.write("www.goole.com".getBytes());  //由于PipedInputStream 内部缓冲为1024,因些写入多了会造成等待,因为读写在一个线程里面,所以整个程序都会等待}pipedout.close();int length = 0;while((length=pipedin.read())!=-1){System.out.print((char)length);}pipedin.close();}catch(IOException ex){System.out.println("管道连接错误...");}}public static void piped() throws IOException {//PipedReader pipedr = new PipedReader();//PipedWriter pipedw = new PipedWriter();BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));PrintWriter pwriter = new PrintWriter(new FileWriter("F:\\java.txt"));int length=0;String line=null;while((line=bufr.readLine())!=null){if(line.equals("over"))break;pwriter.println(line);pwriter.flush();}pwriter.close();bufr.close();}}2011/11/3  10:53:41

 
原创粉丝点击