学习笔记I/O篇之三

本文介绍Java中I/O流的管道连接机制,并通过一个具体示例展示如何使用PipedInputStream和PipedOutputStream实现线程间的通信。该机制利用装饰者设计模式,实现了流功能的动态扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

import java.io.*;

public class PipeStreamTest
{
 
public static void main(String args[])
 
{
    PipedOutputStream pos
=new PipedOutputStream();
    PipedInputStream  pis
= new PipedInputStream();
    
try
    
{
     pos.connect(pis);
     
new Producer(pos).start();
     
new Cosumer(pis).start();
    }

    
catch(IOException e)
    
{
     e.printStackTrace();
    }

 }

}

 
class Producer  extends  Thread 
 
{
  
private PipedOutputStream pos;
  
public  Producer(PipedOutputStream pos)
     
{
         
this.pos=pos;
     }

     
public void run()
     
{
         
try
         
{
             pos.write(
"www.163.com".getBytes());
             pos.close();
         }

         
catch(IOException e)
         
{
             e.printStackTrace();
         }

     }

 }
 
 
 
class Cosumer extends Thread
 
{
    
private PipedInputStream pis;
    
public  Cosumer(PipedInputStream pis)
    
{
       
this.pis=pis;
    }

    
    
public void run()
    
{
       
try
       
{
       
byte[] buf=new byte[100];
       
int len=pis.read(buf);
       System.out.println(
new String(buf,0,len));
        pis.close(); 
        }

         
catch(IOException e)
         
{
             e.printStackTrace();
         }
  
    }

    
 }


  

nJava的I
/O库提供了一个称做链接的机制,可以将一个流与另一个流首尾相接,形成一个流管道的链接。这种机制实际上是一种被称为Decorator(装饰)设计模式的应用。 
n通过流的链接,可以动态的增加流的功能,而这种功能的增加是通过组合一些流的基本功能而动态获取的。 
n我们要获取一个I
/O对象,往往需要产生多个I/O对象,这也是Java I/O库不太容易掌握的原因,但在I/O库中Decorator模式的运用,给我们提供了实现上的灵活性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值