`
msn877763580
  • 浏览: 80689 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java IO 之管道流的使用

阅读更多

 

一、PipedInputStream:管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。

步骤:

输出流一端

1、PipedOutputStream pos = null;

     pos = new PipedOutputStream();

2、调用write方法写入输出流

3、关闭输出流

 

二、PipedOutputStream:可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。

步骤:

输入流一端

1、PipedInputStream pis = null;

     pis = new PipedInputStream();

2、调用read方法读取输出流传递过来的信息

3、关闭输入流

三、测试一端

1、启动两个线程,分别获取发送者和接受者的输出、输入流

2、连接输入流到输出流

3、启动线程

 

import java.io.*;
public class PipedDemo02 {
	public static void main(String[] args) throws IOException {
		SendThread st = new SendThread();
		ReceiveThread rt = new ReceiveThread();
		PipedOutputStream out = st.getOut();
		PipedInputStream in = rt.getIn();
		out.connect(in);
		
		Thread send = new Thread(st);
		Thread receive = new Thread(rt);
		send.start();
		receive.start();
	}
}

class SendThread implements Runnable{
	
	PipedOutputStream pos = null;
	public SendThread(){
		pos = new PipedOutputStream();
	}
	public PipedOutputStream getOut(){
		return this.pos;
	}
	
	@Override
	public void run() {
		String str = "Hello,World";
		try {
			pos.write(str.getBytes());
			pos.close();
		} catch (IOException e) {
		}
		System.out.println("发送的内容:"+str);
	}
	
}
class ReceiveThread implements Runnable{
	
	PipedInputStream pis = null;
	public ReceiveThread(){
		pis = new PipedInputStream();
	}
	public PipedInputStream getIn(){
		return this.pis;
	}
	
	@Override
	public void run() {
		byte b[] = new byte[1024] ;
		int len = 0 ;
		try{
			len = pis.read(b) ;
			pis.close() ;
		}
		catch (Exception e){
		}
		System.out.println("接受的内容:"+new String(b,0,len));
	}
	
}
 

发送的内容:Hello,World

接受的内容:Hello,World

分享到:
评论

相关推荐

    Java之IO流学习总结

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...

    javaIo操作的基础代码

    这是一个java文件IO的基础代码,里面主要介绍了,文件类,字节流,字符流,管道流的一些使用方法!

    javaIO案例

    javaIO经典案例,inputStream、outputStream、fileInputStream、fileOutputStream、管道流等经典案例

    JavaIO流详解

    流(Stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,...

    Java IO流体系图.pdf

    平常我们说的输入流与输出流指的就是输入流管道和输出流管道。与输入流管道相连的盛方数据的媒介就是流的源头,用于提供输入流管道抽取的流;与输出流管道相连的就是流的目的地,就是接收输出流管道中流的媒介,这些...

    重叠IO的管道服务器程序

    支持多客户端,异步传输

    Java数据流发送或接收数据高级IO流.ppt

    Java语言中数据流是发送或接收数据的管道。通常,你的程序是流的一个端点,其它程序或文件是流的另一个端点。 流的单向性:源端点和目的端点分别叫做input stream(输入流)和output stream(输出流)。 你可以从...

    JavaIO的常用方法.docx

    使用io的目的是想要 读写文件内部的内容,读写的方案就是流,既创建管道,让数据以流动的形式,先入先出的方式进行传输;

    毕业设计&课设-Java IO实验室(流上的文件系统、管道和过滤器模式).zip

    毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以...

    IO体系.java

    管道读取流可以读取管道写入流的数据。注意:需要加多线程技术,否则会发生死锁。read方法是阻塞式的。 | |--ByteArrayInputStream/:字节数组输入流。操作的都是内存中的数组,所以不需要关闭。把数组封装到流中,...

    Java开发详解.zip

    031206_【第12章:JAVA IO】_管道流笔记.pdf 031207_【第12章:JAVA IO】_打印流笔记.pdf 031208_【第12章:JAVA IO】_System类对IO的支持笔记.pdf 031209_【第12章:JAVA IO】_BufferedReader笔记.pdf 031210_〖第...

    io:java io学习项目

    java io学习以io,nio为基础,netty为辅程序员素养:掌握面向对象的需求分析和设计理解SOLID原则,理解常用设计模式,熟练掌握重构理解面向服务的架构理解Linux操作系统的一些概念,比如内核空间,用户空间,系统调用,...

    介绍Java对象序列化使用基础

    将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机。对象序列化功能非常简单、强大,在RMI、Socket、JMS、EJB都有应用。对象...

    JAVA基础知识点,J2SE部分内容

    我们使用JAVA的IO操作,必须要使用java.io里的类,所以在使用之前先要导入这个包 3.了解java.io包下的整体结构层次 按层次高低划分 由低---高 3-1.字节流 •抽象父类是 InputStream 和OutputStream 3-2.字符流...

    疯狂JAVA讲义

    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...

    从C++转到Java需注意的地方

    java.io:java.io提供了对流、文件、管道的读写操作。 java.lang:提供了java的基础类Objcet,Integar,Float……; java.net:提供对网络编程的支持。包括处理socket,URL,Internet寻址等。

    java 编程入门思考

    10.7 Java 1.1的IO流 10.7.1 数据的发起与接收 10.7.2 修改数据流的行为 10.7.3 未改变的类 10.7.4 一个例子 10.7.5 重定向标准IO 10.8 压缩 10.8.1 用GZIP进行简单压缩 10.8.2 用Zip进行多文件保存 10.8.3 Java归档...

    Java初学者入门教学

    10.7 Java 1.1的IO流 10.7.1 数据的发起与接收 10.7.2 修改数据流的行为 10.7.3 未改变的类 10.7.4 一个例子 10.7.5 重定向标准IO 10.8 压缩 10.8.1 用GZIP进行简单压缩 10.8.2 用Zip进行多文件保存 10.8.3 Java归档...

    java联想(中文)

    10.7 Java 1.1的IO流 10.7.1 数据的发起与接收 10.7.2 修改数据流的行为 10.7.3 未改变的类 10.7.4 一个例子 10.7.5 重定向标准IO 10.8 压缩 10.8.1 用GZIP进行简单压缩 10.8.2 用Zip进行多文件保存 10.8.3 Java归档...

Global site tag (gtag.js) - Google Analytics