IO流 管道流

package com.yyq;
import java.io.*;
/*
 * 管道流
 * RandomAccessFile
 * 随机访问文件,自身具备读写的方法
 * 通过 SkipBytes(int x)seek(int  x)
 * 结合多线程技术  管道流
 * properties  io+集合相结合
 */
class Read implements Runnable{
    private PipedInputStream in;
    Read(PipedInputStream in){
        this.in = in;
    }
    public void run(){
        try{
            byte[] buf = new byte[1024];
            int len = in.read(buf);
            String s = new String(buf,0,len);
            System.out.println(s);
            in.close();
        }
        catch(Exception e){
            throw new RuntimeException("管道读取流失败");
        }
    }
}
class Write implements Runnable{
    private PipedOutputStream out;
    Write(PipedOutputStream out){
        this.out = out;
    }
    public void run(){
        try{
            Thread.sleep(6000);
            out.write("piped".getBytes());
            out.close();
        }
        catch(Exception e){
            throw new RuntimeException("管道写出流失败");
        }
        
    }
}
public class PiPedStreamDemo {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        PipedInputStream in = new PipedInputStream();
        PipedOutputStream out = new PipedOutputStream();
        // 将两个流链接起来   in.connect(out)
        
        in.connect(out);
        Read r = new Read(in);
        Write w = new Write(out);
        new Thread(r).start();
        new Thread(w).start();
        
    }

}

 

posted @ 2016-01-24 15:48  HuberyQian  阅读(206)  评论(0编辑  收藏  举报