IO//管道流

扫码查看

管道流 : PipedInputStream   、 PipedOutputStream

import java.io.*;
import java.util.*;
public class Practice_2 {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub 

        PipedInputStream in = new PipedInputStream();
        PipedOutputStream out = new PipedOutputStream();
        in.connect(out);

        Read r = new Read(in);
        Write w = new Write(out);

        new Thread(r).start();
        new Thread(w).start();

    }

}
class Read implements Runnable
{
    private PipedInputStream in;
    Read(PipedInputStream in)
    {
        this.in = in;
    }
    public void run()
    {
        try
        {

            byte[] buf = new byte[1024];
            System.out.println("读取前、没有阻塞");
            int len = in.read(buf);
            System.out.println("读取后、阻塞结束");
            String s = new String(buf,0,len);

            System.out.println(s);

            in.close();
        }
        catch(IOException e)
        {
            System.out.println("管道读取流失败");
        }
    }
}
class Write implements Runnable
{
    private PipedOutputStream out;
    Write(PipedOutputStream out)
    {
        this.out = out;
    }
    public void run()
    {
        try
        {
            System.out.println("正在写入数据、请稍等6秒");
            Thread.sleep(6000);
            out.write("piped lai le".getBytes());
            out.close();
        }
        catch(Exception e)
        {
            throw new RuntimeException("管道输出失败");
        }
    }
}
01-10 02:48
查看更多