Java中FilterInputStream和FilterOutputStream的用法
FilterInputStream
FilterInputStream 的作用是用来“封装其它的输入流,并为它们提供额外的功能”。它的常用的子类有BufferedInputStream和DataInputStream。
BufferedInputStream的作用就是为“输入流提供缓冲功能,以及mark()和reset()功能”。
DataInputStream 是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据。
FilterInputStream 源码(基于jdk1.7.40):
package java.io; public class FilterInputStream extends InputStream {protected volatile InputStream in;protected FilterInputStream(InputStream in) {this.in = in;}public int read() throws IOException {return in.read();}public int read(byte b[]) throws IOException {return read(b, 0, b.length);}public int read(byte b[], int off, int len) throws IOException {return in.read(b, off, len);}public long skip(long n) throws IOException {return in.skip(n);}public int available() throws IOException {return in.available();}public void close() throws IOException {in.close();}public synchronized void mark(int readlimit) {in.mark(readlimit);}public synchronized void reset() throws IOException {in.reset();}public boolean markSupported() {return in.markSupported();} }
FilterOutputStream
FilterOutputStream 的作用是用来“封装其它的输出流,并为它们提供额外的功能”。它主要包括BufferedOutputStream, DataOutputStream和PrintStream。
(01) BufferedOutputStream的作用就是为“输出流提供缓冲功能”。
(02) DataOutputStream 是用来装饰其它输出流,将DataOutputStream和DataInputStream输入流配合使用,“允许应用程序以与机器无关方式从底层输入流中读写基本 Java 数据类型”。
(03) PrintStream 是用来装饰其它输出流。它能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
FilterOutputStream 源码(基于jdk1.7.40):
package java.io;public class FilterOutputStream extends OutputStream {protected OutputStream out;public FilterOutputStream(OutputStream out) {this.out = out;}public void write(int b) throws IOException {out.write(b);}public void write(byte b[]) throws IOException {write(b, 0, b.length);}public void write(byte b[], int off, int len) throws IOException {if ((off | len | (b.length - (len + off)) | (off + len)) < 0)throw new IndexOutOfBoundsException();for (int i = 0 ; i < len ; i++) {write(b[off + i]);}}public void flush() throws IOException {out.flush();}public void close() throws IOException {try {flush();} catch (IOException ignored) {}out.close();} }
转载于:https://www.cnblogs.com/printN/p/6240724.html
Java中FilterInputStream和FilterOutputStream的用法相关推荐
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- Java中PreparedStatement和Statement的用法区别
Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈 1. PreparedStatement接口继承Sta ...
- Java中static的含义和用法
Java中static的含义和用法 static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! ...
- Java中栈和队列的用法 Stack And Queue
Java中栈和队列的用法 栈的实现 使用Java的集合类Stack boolean isEmpty();//判断当前栈是否为空,等价于empty(); synchronized E peek();// ...
- java drawstring字体大小,JAVA中,drawstring 方法的用法,格式是什么啊
啦啦啦额68的回答 Java中Graphics类的drawString()方法: i)drawString(String str,int x,int y): String str是可以在屏幕上显示的字 ...
- java中的Queue队列的用法
大家好,欢迎来到雄雄的小课堂,今天给大家分享的是"java中的Queue队列的用法" 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用 ...
- Java中BigDecimal类介绍及用法
Java中BigDecimal类介绍及用法 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高 ...
- Java中final的三种用法
在java中final的三种用法: 1. final成员变量 2. final函数 3. final类 final成员变量 当你在类中定义变量时,在其前面加上final关键字,那便是说这个变量一旦被初 ...
- Java中的final,finalized,finally用法
Java中的final,finalized,finally用法 final: final可以让你控制你的成员.方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或 ...
- java中super用来定义父类,Java中super的几种用法及与this的区别
综观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺 ...
最新文章
- 新视野计算机等级考试官网,计算机二级C语言
- 合并分支时有的文件删除了_GitGithub入门教程笔记(4)之分支管理一
- java-初识JVM的内存分配(5个区域)概念--系列(一)
- 200819C阶段一C++面向对象的编程思想
- SQL语言基础:触发器相关知识介绍​
- 对话彭军、楼教主:1.12亿美元融资来了,Pony.ai车队也已在路上 | 变局者
- 打印一种拓扑排序(假定给的是有向无环图时)DFS+栈
- Faster-Rcnn扫盲
- 顺序表和链表 相关知识点总结
- kmeans聚类理论篇
- Shopee数据获取逻辑
- HTML+CSS网页设计期末课程大作业:个人网站设计——个人介绍(7页) web前端开发技术 web课程设计 网页规划与设计
- Matlab/Simulink Embedded Coder一个非常迷幻的问题
- FieldTrip toolbox教程系列(1)-预处理-读取连续的EEG和MEG数据
- 初学者该掌握的计算机知识,初学者该如何学习电脑知识
- MMORPG网络游戏开发之用户管理
- 013达克效应|自视甚高与倾家荡产
- 台式计算机硬盘英寸,台式电脑硬盘和笔记本电脑硬盘有区别吗?台式机硬盘报价一般是多少?...
- Bugzilla详解
- 《痞子衡嵌入式半月刊》 第 15 期
热门文章
- Linux系统编程 -- 进程与线程之间差别 进程是系统资源分配的最小单位,线程是进程执行的最小单位
- 前台传递过来的参数遍历
- 微型计算机的工作过程是执行程序过程吗,微型计算机的工作过程和主要性能指标...
- ribbon基于接口配置超时_Spring Cloud第二篇:服务消费者RestTemplate+Ribbon
- 微控制器MCU四大平台你了解多少?(二)
- linux jdk环境变量配置不生效_Linux服务器JDK环境变量配置
- 【渝粤教育】国家开放大学2018年秋季 2409T中国古代文学(B)(1) 参考试题
- 【渝粤教育】国家开放大学2018年春季 3722-21T燃气输配工程 参考试题
- 【渝粤教育】电大中专药剂学基础知识 (2)_1作业 题库
- ROS-Kinetic安装turtlebot-3并仿真