day2--2012.10.13

来源:互联网 发布:华盛顿大学怎么样 知乎 编辑:程序博客网 时间:2024/06/03 18:46

管道操作流:PipedInputStream和PipedOutputStream,通过PipedInputStream的实例化对象调用connect(PipedOutputStream src)方法连接;

内存操作流:ByteArrayInputStream和ByteArrayOutputStream,这时候以内存为操作对象;

管道流的一个例子:

import java.io.* ;
class Send implements Runnable{            // 线程类
    private PipedOutputStream pos = null ;    // 管道输出流
    public Send(){
        this.pos = new PipedOutputStream() ;    // 实例化输出流
    }
    public void run(){
        String str = "Hello World!!!" ;    // 要输出的内容
        try{
            this.pos.write(str.getBytes()) ;
        }catch(IOException e){
            e.printStackTrace() ;
        }
        try{
            this.pos.close() ;
        }catch(IOException e){
            e.printStackTrace() ;
        }
    }
    public PipedOutputStream getPos(){    // 得到此线程的管道输出流
        return this.pos ;    
    }
};
class Receive implements Runnable{
    private PipedInputStream pis = null ;    // 管道输入流
    public Receive(){
        this.pis = new PipedInputStream() ;    // 实例化输入流
    }
    public void run(){
        byte b[] = new byte[1024] ;    // 接收内容
        int len = 0 ;
        try{
            len = this.pis.read(b) ;    // 读取内容
        }catch(IOException e){
            e.printStackTrace() ;
        }
        try{
            this.pis.close() ;    // 关闭
        }catch(IOException e){
            e.printStackTrace() ;
        }
        System.out.println("接收的内容为:" + new String(b,0,len)) ;
    }
    public PipedInputStream getPis(){
        return this.pis ;
    }
};
public class PipedDemo{
    public static void main(String args[]){
        Send s = new Send() ;
        Receive r = new Receive() ;
        try{
            s.getPos().connect(r.getPis()) ;    // 连接管道
        }catch(IOException e){
            e.printStackTrace() ;
        }
        new Thread(s).start() ;    // 启动线程
        new Thread(r).start() ;    // 启动线程
    }
};


原创粉丝点击