为什么80%的码农都做不了架构师?>>>   

过滤器通过其构造函数与流连接。例如,下面的代码段将缓冲文件data.txt的输入:

InputStream in = new FileInputStream("F:/data.txt");
BufferedInputStream bin = new BufferedInputStream(in);

从文件data.txt中读取文件可能会同时使用 in 和 bin 的read()方法。不过,如果混合调用连接到同一个源的不同流,这可能会违反过滤器流的一些隐含的约定。大多数情况下,应当只使用链中最后一个过滤器进行实际的读/写。要想在编写代码时尽量不带入这种bug,可以有意地重写底层输入流的引用。例如:

InputStream in = new FileInputStream("F:/data.txt");
in = new BufferedInputStream(in);

执行这两行代码后,再没有任何方法能访问底层的文件输入流了,所以也就不会不小心读取这个流而破坏缓冲区。当然了,也可以直接在一个流中构建另一个流,如例:

DataOutputStream dout = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("F:/data.txt")));

有时可能会需要使用链中多个过滤器的方法。不过,除了链中最后一个过滤器之外,无论如何你都不应该从其他的过滤器读取数据,或向其写入任何内容

我们来看一个完整的例子:

package test;import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;public class ReadFile3 {public static void main(String[] args) {try (BufferedInputStream bin = new BufferedInputStream(new FileInputStream("F:/data.txt"))){int b;while((b = bin.read()) != -1){System.out.print((char)b);}} catch (IOException e) {e.printStackTrace();}}
}

转载于:https://my.oschina.net/fhd/blog/326926

流之过滤器流(将过滤器串链在一起)相关推荐

  1. 小白初窥VR世界的通行证?浅聊 PCVR 串流软件 Virtual Desktop - VR与串流篇 上

    什么是Virtual Desktop? Virtual Desktop (以下简称VD)是一款VR串流软件,其通过局域网低延迟.高质量的流式传输将PC端的界面同步到用户的VR头显中,给用户带来舒适且愉 ...

  2. java流与文件——流

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--流 的相关知识: 0.2) 输入流和输出流(InputStream 和 OutputS ...

  3. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  4. JavaSE——IO(上)(File、字节流、字符流、转换流、打印流、缓存流)

    第3节 IO(上) 一.File类与文件基本操作 在程序中经常需要用到文件的操作,Java有专门的类来进行文件的操作--File类. 1.1 File类概述 它是对文件和目录路径名的抽象表示. 即它本 ...

  5. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流

    一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...

  6. File类,字节字符输入输出流,缓冲流,标准流,对象序列化流

    一,File文件类 1 File类创建功能:    public boolean createNewFiLe():当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件       如果文件 ...

  7. RedisBloom 插件布隆过滤器,布谷鸟过滤器,Count-Min Sketch,TOPK使用详解

    文章目录 前言 一.如何安装 二.布隆过滤器 1. 使用介绍 2. 命令详解 三.布谷鸟过滤器 1. 使用介绍 2. 命令详解 三.Count-Min Sketch 1. 使用介绍 2. 命令详解 四 ...

  8. Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)

    1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...

  9. 请求流和响应流(复习笔记)

    请求流和响应流 一: 使用响应流进行响应文件(数据,图片都可以) @GetMapping("/test")public void getRequestMap(HttpServlet ...

最新文章

  1. 美团多渠道打包方案详解,速度快到白驹过隙
  2. python语音在线编辑-Python实时语音识别控制
  3. {}是set类型还是dict类型呢
  4. P4301-[CQOI2013]新Nim游戏【线性基】
  5. mongodb4简明笔记
  6. Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
  7. oracle 改redo表空间,Oracle临时表空间查看、添加临时表空间数据文件、修改默认临时表空间 方法!...
  8. Scott Mitchell 的ASP.NET 2.0数据教程之十五:在GridView的页脚中显示统计信息
  9. 【深度学习Deep Learning系列】word2vec和doc2vec
  10. 【linux】系统压力模拟工具stress
  11. 2022清明节放假安排来了,制定假日计划可用云便签软件
  12. 总结一下2010--2011初看的书
  13. ElasticSearch Java 客户端连接ElasticSearch
  14. My 2007 Fash game: Elite Shooter
  15. 评价的等级优良差_小学生期末评语-等级优良合格(最新)
  16. 斧乃木余接win10主题分享
  17. exadata的exacli
  18. 项目经理手册-项目经理需要铭记在心的话
  19. Redisson time out解决
  20. 【方案PCBA设计】LCD显示的蓝牙厨房电子秤方案

热门文章

  1. ripro虚拟资源主题8.9开心版/免授权/ripro日主题V8.9
  2. 苹果CMSv10官方版程序包
  3. Windows Phone 7 Developer Tools amp; Training Kit 正式版发布!
  4. 20个非常棒的Jquery实用工具 [转]
  5. HTML5+CSS3实现的响应式垂直时间轴
  6. PHP中的CURL函数库
  7. 通过docker build --build-arg 传值进 Dockerfile 动态构建容器
  8. CentOS7.1下targetcli的使用
  9. Linux(ubuntu)更换内核方法
  10. 搭建LNMP环境(CentOS 6.8 + nginx1.10 + mysql5.6 + php5.6 )