PipedOutputStream&PipedInputStream---管道流

管道流通常与多线程技术相结合

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class PipedStreamDemo {

    public static void main(String[] args) throws IOException {

        //管道流和多线程技术相结合
        PipedInputStream pis =new PipedInputStream();
        PipedOutputStream pos = new PipedOutputStream();

        //将两个流连接上。
        pis.connect(pos);
        new Thread(new Input(pis)).start();
        new Thread(new Output(pos)).start();

    }

}
//定义输入任务
class Input implements Runnable{

    private PipedInputStream pis;

    public Input(PipedInputStream pis) {
        super();
        this.pis = pis;
    }
    @Override
    public void run() {

        byte[] buf = new byte[1024];
        int len;
        try {
            len = pis.read(buf);
            String str = new String(buf,0,len);
            System.out.println(str);
            pis.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

//定义输出任务
class Output implements Runnable{
    PipedOutputStream pos;

    public Output(PipedOutputStream pos) {
        super();
        this.pos = pos;
    }

    @Override
    public void run() {

        //通过写方法完成
        try {
            pos.write("嘿,管道来了".getBytes());

            pos.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
时间: 2024-08-26 14:34:40

PipedOutputStream&PipedInputStream---管道流的相关文章

java 管道流PipedOutputStream和PipedInputStream基本操作

java的管道流要PipedOutputSream和PipedInputStream结合起来使用,管道流主要用来进行线程之间的通信. 上代码 import java.io.*; public class PipeStreamDemo { public static void main(String[] args) { PipedOutputStream out=null; PipedInputStream in=null; Sender sender=new Sender(); Receiver

java IO 管道流PipedOutputStream/PipedInputStream

详情:管道流的具体实现 import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; //A线程发送数据给B线程 class AThread extends Thread{ private PipedOutputStream out=new PipedOutputStream(); public PipedOutputStream getOut() { return o

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程

管道流 pipedinputstream

public class StreamDemo3 { public static void main(String[] args) { try { //管道流 PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(in); Send send = new Send(out); Receiver rec = new Receiver(in); send.send();

Java IO7:管道流、对象流

前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常见的流类.当然除了这些流类之外,Java还提供了很多的流类给用户使用,本文就看一下别的流. 管道流 管道流主要用于连接两个线程的通信.管道流也分为字节流(PipedInputStream.PipedOutputStream)和字符流(PipedReader.PipedWriter).比如一个Pipe

JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的

IO-05内存操作流06管道流

JAVA中可以将输出的位置设置在内存上,此时使用ByteArrayInputStream,ByteArrayOutputStream来完成输入,输出功能. 利用这两个类实现大小字母的转换: package lianxijihe; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; impo

黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程序猿--25.打印流.合并流.对象序列化,管道流,RandomAccessFile /* IO流的打印流:专门用于打印的流 字节打印流PrintStream PrintStream的构造函数能够接收file对象,String型字符串路

Java基础学习笔记【10】打印流、管道流

ByteArrayInputStream和ByteArrayOutputStream内存流,操作基本和文件流其他流差不多,主要使用在程序需要用临时文件,关闭内存流是无效的所以不用关闭 操作流,不管是什么流,最保险的方式,就是最后都close一下 内存流: ByteArrayInputStream.ByteArrayOutputStream.CharArrayReader. CharArrayWriter: 打印流: 1 2 3 4 5 6 PrintStream: print(Object o)

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