过滤器流

过滤器流

      过滤器有两个版本:过滤器流及reader阅读器和writer书写器。过滤器流仍然主要将原始数据作为字节操作:例如通过压缩数据或解释为二进制数字。reader和writer处理各种编码文本的特殊情况,如UTF-8和ISO-8859.过滤器流置于原始流(如FileOutputStream)或其他过滤器流之上。reader和writer置于原始流、过滤器流或其他reader和writer之上。但是过滤器流不能置于reader和writer上面。

    过滤器以链的形式进行组织,链中的每个环节都接收前一个过滤器或流的数据,并把数据传递给链中的下一个环节。

    网络->TelnetInputStream->BufferedInputStream->CipherInputStream->GZIPInputStream->InputStreamReader->App

    每个过滤器输出流都有与java.io.OutputStream相同的write、close和flush方法;每个过滤器输入流都有与java.io.InputStream相同的read、close和available方法。过滤纯粹是内部操作,不提供任何新的公共接口。但是,在大多数情况下,过滤器流添加了另外一些公共方法。

                                                                                  

   将过滤器链接到一起

   过滤器通过其构造函数与流链接。比如

   FileInputStream fin = new FileInputStream("data.txt");
   BufferedInputStream bin = new BufferedInputStream(fin);
    在此之后,从文件data.txt中读取文本可能会同时使用fin和bin的read方法。但是,如果混合使用链接到同一个源的不同流,这可能会违反过滤器流的一些暗定的约定。大多数情况下,我们应该只使用作用链中最后一个过滤器进行实际的读写。有意的丢掉对底层输入流的引用。
  <span style="font-size:18px;">BufferedInputStream bin = new BufferedInputStream(new FileInputStream("data.txt"));</span>
   如果需要超类中没有的方法,可以直接在一个流中构建另外一个流。
<span style="font-size:18px;">  DataOutputStream dout = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("data.txt"));</span>
   这种连接时永久的,过滤器无法和流断开连接。


  PS: 第一次发图片,搞了N次,还好发布上去了。

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值