流之过滤器流(将过滤器串链在一起)
为什么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
流之过滤器流(将过滤器串链在一起)相关推荐
- 小白初窥VR世界的通行证?浅聊 PCVR 串流软件 Virtual Desktop - VR与串流篇 上
什么是Virtual Desktop? Virtual Desktop (以下简称VD)是一款VR串流软件,其通过局域网低延迟.高质量的流式传输将PC端的界面同步到用户的VR头显中,给用户带来舒适且愉 ...
- java流与文件——流
[0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--流 的相关知识: 0.2) 输入流和输出流(InputStream 和 OutputS ...
- 一文读懂Java中File类、字节流、字符流、转换流
一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...
- JavaSE——IO(上)(File、字节流、字符流、转换流、打印流、缓存流)
第3节 IO(上) 一.File类与文件基本操作 在程序中经常需要用到文件的操作,Java有专门的类来进行文件的操作--File类. 1.1 File类概述 它是对文件和目录路径名的抽象表示. 即它本 ...
- java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流
一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...
- File类,字节字符输入输出流,缓冲流,标准流,对象序列化流
一,File文件类 1 File类创建功能: public boolean createNewFiLe():当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件 如果文件 ...
- RedisBloom 插件布隆过滤器,布谷鸟过滤器,Count-Min Sketch,TOPK使用详解
文章目录 前言 一.如何安装 二.布隆过滤器 1. 使用介绍 2. 命令详解 三.布谷鸟过滤器 1. 使用介绍 2. 命令详解 三.Count-Min Sketch 1. 使用介绍 2. 命令详解 四 ...
- Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)
1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...
- 请求流和响应流(复习笔记)
请求流和响应流 一: 使用响应流进行响应文件(数据,图片都可以) @GetMapping("/test")public void getRequestMap(HttpServlet ...
最新文章
- 美团多渠道打包方案详解,速度快到白驹过隙
- python语音在线编辑-Python实时语音识别控制
- {}是set类型还是dict类型呢
- P4301-[CQOI2013]新Nim游戏【线性基】
- mongodb4简明笔记
- Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
- oracle 改redo表空间,Oracle临时表空间查看、添加临时表空间数据文件、修改默认临时表空间 方法!...
- Scott Mitchell 的ASP.NET 2.0数据教程之十五:在GridView的页脚中显示统计信息
- 【深度学习Deep Learning系列】word2vec和doc2vec
- 【linux】系统压力模拟工具stress
- 2022清明节放假安排来了,制定假日计划可用云便签软件
- 总结一下2010--2011初看的书
- ElasticSearch Java 客户端连接ElasticSearch
- My 2007 Fash game: Elite Shooter
- 评价的等级优良差_小学生期末评语-等级优良合格(最新)
- 斧乃木余接win10主题分享
- exadata的exacli
- 项目经理手册-项目经理需要铭记在心的话
- Redisson time out解决
- 【方案PCBA设计】LCD显示的蓝牙厨房电子秤方案
热门文章
- ripro虚拟资源主题8.9开心版/免授权/ripro日主题V8.9
- 苹果CMSv10官方版程序包
- Windows Phone 7 Developer Tools amp; Training Kit 正式版发布!
- 20个非常棒的Jquery实用工具 [转]
- HTML5+CSS3实现的响应式垂直时间轴
- PHP中的CURL函数库
- 通过docker build --build-arg 传值进 Dockerfile 动态构建容器
- CentOS7.1下targetcli的使用
- Linux(ubuntu)更换内核方法
- 搭建LNMP环境(CentOS 6.8 + nginx1.10 + mysql5.6 + php5.6 )