您的位置:首页 > 职场人生

黑马程序员——Java基础——IO流笔记(PipedInputStream和PipedOutputStream使用示例)

2014-10-06 15:28 459 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

package com.itheima.log.io;

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

/**
* 管道流
* 		PipedInputStream
* 		PipedOutputStream
*
* 		重点:
* 			PepidInputStream和PepidOutputStream使用逻辑
* 			1.在Write类中读取文件(或其他输入流对象的数据)后用PepidOutputStream写出到PepidInputStream
* 			2.在PepidInputStream读取在PepidOutputStream写入的数据
*
* 修改时间:2014-10-2 下午04:39:42
*/
public class PipedStream2010 {
//3.定义输入输出管道流对象和线程绑定,并执行
public static void main(String[] args)throws IOException{
PipedInputStream in = new PipedInputStream();			//1.创建输入管道流
PipedOutputStream out = new PipedOutputStream();		//2.创建输出管道流
in.connect(out);										//3.输入管道流连接输出管道流

Read r = new Read(in);									//4.定义执行输入管道流对象	(在这对象中用PipedInputStream对象读取PipedOutputStream对象中的数据,并进行打印或其他处理方式)
Write w = new Write(out);								//5.定义执行输入管道流对象	(在这对象中用输入流对象读取文件到管道流PipedOutputStream)
new Thread(r).start();									//6.定义一个线程来执行Read
new Thread(w).start();									//7.定义一个线程来执行Write
}

}
//1.创建Read类来执行PipedInputStream,为了单独用一个线程来运行该对象实现Runnable接口
class Read implements Runnable{

private PipedInputStream in;

Read(PipedInputStream in){
this.in = in;
}

@Override
public void run() {

try {
byte[] by = new byte[1024];
int len = 0;
System.out.println("等待数据写入");
len = in.read(by);					//002.等out.write()方法执行后,才会执行in.read()方法
System.out.println("已读取到写入数据");
String s = new String(by,0,len);
System.out.println(s);
in.close();
} catch (IOException e) {
throw new RuntimeException("输入管道流异常");
}
}
}
//2.创建Write类来执行PipedOutputStream,为了单独用一个线程来运行该对象实现Runnable接口
class Write implements Runnable{
private PipedOutputStream out;
Write(PipedOutputStream out){
this.out = out;
}
@Override
public void run() {
try {
System.out.println("6秒后,准备写入数据");
Thread.sleep(6000);
out.write("piped lai le".getBytes());		//001.写入数据
System.out.println("已经写入数据");
out.close();
} catch (Exception e) {
throw new RuntimeException("输出管道流异常");
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐