![52a47e30c895ab101b3a79e00952954b.png](https://i-blog.csdnimg.cn/blog_migrate/cb0b90083e044a5c1c2edf9ca4313163.jpeg)
前言
前面的文章主要讲了文件字符输入流FileWriter、文件字符输出流FileReader、文件字节输出流FileOutputStream、文件字节输入流FileInputStream,这些都是常见的流类。当然除了这些流类之外,Java还提供了很多的流类给用户使用,本文就看一下别的流。
管道流
管道流主要用于连接两个线程的通信。管道流也分为字节流(PipedInputStream、PipedOutputStream)和字符流(PipedReader、PipedWriter)。比如一个PipedInputStream必须和一个PipedOutputStream对象进行连接而产生一个通信管道,PipedOutputStream向管道中写入数据,PipedInputStream从管道中读取数据。管道流的工作如下图所示:
![0169bb91e059136d037ca2b2be6e5d08.png](https://i-blog.csdnimg.cn/blog_migrate/c9cbf3be1c4bf990b21d0f794368c2c0.jpeg)
下面看一下管道流的用法。既然管道流的作用是用于线程间的通信,那么势必有发送线程和接收线程,两个线程通过管道流交互数据。首先写一个发送数据的线程:
public class Sender implements Runnable
{
private PipedOutputStream out = new PipedOutputStream();
public PipedOutputStream getOutputStream()
{
return out;
}
public void run()
{
String str = "Receiver, 你好!";
try
{
out.write(str.getBytes()); // 向管道流中