JDK 1.7 java.io 源码学习之FilterInputStream和FilterOutputStream
来源:互联网 发布:aso优化 下载排名 编辑:程序博客网 时间:2024/05/27 09:44
FilterInputStream和FilterOutputStream 就是 java.io 中其他功能扩展实现类的父类,其中的设计模式是装饰者模式。
装饰者模式:在不改变原类文件和不使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
当然了,上述UML中是可以变形的:
1. Component可以是抽象类,或者普通类(不建议)
2. Decorator也并不是一定是必须的
java.io 输入流的装饰模式结构:
java.io 输出流的装饰模式结构:
FilterInuptStream和FilterOutputStream 实际非常简单,就是内部持有了一个对象,InputStream或者OutputStream,所有的方法都是对InputStream和OutputStream方法的一次封装调用
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(); }}
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(); }}
0 0
- JDK 1.7 java.io 源码学习之FilterInputStream和FilterOutputStream
- Java IO 之 FilterInputStream/FilterOutputStream
- Java IO FilterInputStream和FilterOutputStream
- Java IO - FilterInputStream&FilterOutputStream
- 学习笔记之java.io包中的字节流(下)—— FilterInputStream和FilterOutputStream
- 18.Java IO: FilterInputStream 、FilterOutputStream、PushbackInputStream
- JAVA IO源码学习系列一(FilterInpuStream 和FilterOutputStream)
- FilterOutputStream 和FilterInputStream
- filterinputstream和filteroutputstream
- Java-IO之FilterInputStream和FilterOuptStream
- Java-IO之FilterInputStream和FilterOuptStream
- 说说 Java I/O 系统之 FilterInputStream 与 FilterOutputStream 类
- java基础I/O系列--FilterInputStream 和FilterOutputStream
- JDK 1.7 java.io 源码学习之InputStream和OutputStream
- JDK 1.7 java.io 源码学习之FileInputStream和FileOutputStream
- JDK 1.7 java.io 源码学习之ByteArrayInputStream和ByteArrayOutputStream
- JDK 1.7 java.io 源码学习之ObjectInputStream和ObjectOutputStream
- FilterInputStream && FilterOutputStream
- Android向服务器传递参数方式:Post&Get
- koji编包解决noarch包不同架构doc文件不同的问题记录
- 虚拟机上安装CentOS7
- jboss项目部署的操作
- 吸顶+锚点
- JDK 1.7 java.io 源码学习之FilterInputStream和FilterOutputStream
- C++ 类的静态成员详细讲解
- SQLServer 中发布与订阅
- 什么是闭包,闭包的作用与好处是什么,何时使用闭包,对闭包的改进
- Android studio配置copyright插入版权信息的详细教程
- 优化M有School 第四章课后4 罚款事务
- iTextsharp.dll用于分割的实战实例
- Xcode8.N以后关于pch文件配置报错问题!
- Java编程思想笔记——第十三章 字符串