当前位置:首页 > 开发 > 编程语言 > Java IO > 正文

java IO 管道流实例

发表于: 2012-05-25   作者:blackproof   来源:转载   浏览次数:
摘要: /* 管道流: PipedInputStream void connect(PipedOutputStream src) 使此管道输入流连接到管道输出流 src PipedOutputStream void connect(PipedInputStream snk) 在JDK我们看到PipedInputStream中有管道缓冲区,用来接收数据

/*   
管道流: 
PipedInputStream 
void connect(PipedOutputStream src)  
使此管道输入流连接到管道输出流 src 
 
PipedOutputStream 
void connect(PipedInputStream snk)   
 
在JDK我们看到PipedInputStream中有管道缓冲区,用来接收数据 
 
管道流内部在实现时还有大量的对同步数据的处理 
管道输出流和管道输入流执行时不能互相阻塞,所以一般要开启独立线程分别执行 
顺便复习了多线程操作 
 
[示例]:管道流 
 */
import java.io.*;

class PipleI {
	public static void main(String[] args) throws Exception {
		PipedInputStream pin = new PipedInputStream();
		PipedOutputStream pout = new PipedOutputStream();
		pin.connect(pout); // 输入流与输出流连接

		ReadThread readTh = new ReadThread(pin);
		WriteThread writeTh = new WriteThread(pout);
		new Thread(readTh).start();
		new Thread(writeTh).start();
	}

	public static void sop(Object obj) // 打印
	{
		System.out.println(obj);
	}
}

class ReadThread implements Runnable {
	private PipedInputStream pin;

	ReadThread(PipedInputStream pin) //  
	{
		this.pin = pin;
	}

	public void run() // 由于必须要覆盖run方法,所以这里不能抛,只能try
	{
		try {
			sop("R:读取前没有数据,阻塞中...等待数据传过来再输出到控制台...");
			byte[] buf = new byte[1024];
			int len = pin.read(buf); // read阻塞
			sop("R:读取数据成功,阻塞解除...");

			String s = new String(buf, 0, len);
			sop(s); // 将读取的数据流用字符串以字符串打印出来
			pin.close();
		} catch (Exception e) {
			throw new RuntimeException("R:管道读取流失败!");
		}
	}

	public static void sop(Object obj) // 打印
	{
		System.out.println(obj);
	}
}

class WriteThread implements Runnable {
	private PipedOutputStream pout;

	WriteThread(PipedOutputStream pout) {
		this.pout = pout;
	}

	public void run() {
		try {
			sop("W:开始将数据写入:但等个5秒让我们观察...");
			Thread.sleep(5000); // 释放cpu执行权5秒
			pout.write("W: writePiped 数据...".getBytes()); // 管道输出流
			pout.close();
		} catch (Exception e) {
			throw new RuntimeException("W:WriteThread写入失败...");
		}
	}

	public static void sop(Object obj) // 打印
	{
		System.out.println(obj);
	}
}
 

java IO 管道流实例

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

我来说两句
评论内容:
验  证  码:
 
(网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。)
评论列表
已有 0 条评论(查看更多评论)
编辑推荐
管道流(线程通信流) 管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputSt
管道流(线程通信流) 管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputSt
即使在图形用户界面占统治地位的今天,控制台输出仍旧在Java程序中占有重要地位。控制台不仅是Java
关键字: java管道流 即使在图形用户界面占统治地位的今天,控制台输出仍旧在Java程序中占有重要地位
来自http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html,写的很详细 Java流操作有关的
【案例1】创建一个新文件 import java.io.*; class hello{ public static void main(String[] args)
一 . 流的概念 流(stream)的概念源于UNIX中的管道(pipe)的概念。流,必有源端和目的端。 二 .
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字
1.概述 Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号