PipedInputStream的用途

javaglory 2006-08-30 03:08:37
请高手解释一下PipedInputStream的用途,例如,为什么要用它呢,什么情况下用它能带来好处。最好有个例子说服一下它的用法。

...全文
1299 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
terry_yip 2006-09-01
  • 打赏
  • 举报
回复
见过楼上几次回贴,真有点水平。
fishyqd 2006-08-31
  • 打赏
  • 举报
回复
在Java的IO流中有一种很特殊的流就是管道流类:PipedInputStream PipedOutputStream.这两个类的实例对象必须要通过connect方法连接.

  其实看这么一个程序就知道了管道流类的使用方法.

//sender.java

import java.io.*;
import java.util.*;
public class sender extends Thread
{
PipedOutputStream out = new PipedOutputStream();
public PipedOutputStream getOut()
{
return out;
}
public void run()
{
String str = "Hello,receiver ! I`m sender\n";
try
{
out.write(str.getBytes());
out.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
//receiver.java

import java.io.*;
import java.util.*;
public class receiver extends Thread
{
PipedInputStream in = new PipedInputStream();
public PipedInputStream getIn()
{
return in;
}
public void run()
{
byte [] buf = new byte[1024];
try
{
int len = in.read(buf);
System.out.println("the following is from sender:\n"+new String(buf,0,len));
in.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}

//TestPiped.java

import java.io.*;
class TestPiped
{
public static void main(String [] args)
{
sender s = new sender();
receiver r = new receiver();
PipedOutputStream out = s.getOut();
PipedInputStream in = r.getIn();
try
{
in.connect(out);
s.start();
r.start();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}

这个程序的功能是sender发送"Hello,receiver ! I`m sender"给receiver然后receiver接受后显示出来并且在前面加上"the following is from sender"的信息.要注意的就是PipedInputStream和PipedOutputStream分别用两个线程传送数据.
Javafan0 2006-08-31
  • 打赏
  • 举报
回复
up
javaglory 2006-08-31
  • 打赏
  • 举报
回复
up
千里冰封820 2006-08-30
  • 打赏
  • 举报
回复
它就是一个管道流,你可以把它看成一个现实生活中的管子,里面可以流水
它有一个好处就是不用存在什么地方,而是直接在管子里面互相流来流去,并且可以直接从里面取
zhangj0571 2006-08-30
  • 打赏
  • 举报
回复
数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能会死锁该线程。传送输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。
wanguanghai 2006-08-30
  • 打赏
  • 举报
回复
不懂,顶下
donggua12345678 2006-08-30
  • 打赏
  • 举报
回复
友情UP

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧