Java基础之管道流对象 PipedInputStream / PipedOutputStream

管道流 PipedInputStream / PiedOutputStream 说明:输入输出可以直接进行连接,通过结合线程使用。
import java.io.*;

class PipedStreamDemo
{
    public static void main(String[] args) throws Exception
    {
        PipedInputStream in = new PipedInputStream();
        PipedOutputStream out = new PipedOutputStream();
        
        in.connect(out);
        
        new Thread(new Reader(in)).start();
        new Thread(new Writer(out)).start();
    }
}

class Reader implements Runnable
{
    private PipedInputStream in;
    public Reader(PipedInputStream in)
    {
        this.in = in;
    }
    
    public void run()
    {
        try        
        {
            byte[] buffer = new byte[1024];
            int length = 0;
            System.out.println("等待读取数据...");
            while((length=in.read(buffer))!=-1)
            {
                System.out.println(new String(buffer,0,length));
            }
            
            in.close();
        }
        catch(Exception e)
        {
            throw new RuntimeException(e.getMessage());
        }
    }
}

class Writer implements Runnable
{
    private PipedOutputStream out;
    public Writer(PipedOutputStream out)
    {
        this.out = out;
    }
    
    public void run()
    {
        try        
        {
            System.out.println("六秒后开始写入数据...");
            Thread.sleep(6000);
            out.write("hello PipedStream here.".getBytes());
            out.close();
        }
        catch(Exception e)
        {
            throw new RuntimeException(e.getMessage());
        }
    }
}
posted @ 2013-02-04 10:55  陈晓明  阅读(327)  评论(0编辑  收藏  举报