本文摘抄至:skywang12345
摘要:因为 FilterInputStream只是一个标准所以没有实例,具体参考 InputStream
FilterInputStream 介绍
FilterInputStream :的作用是用来 “封装其它的输入流,并为它们提供额外的功能”。它的常用的子类有BufferedInputStream和DataInputStream。
BufferedInputStream: 的作用就是为“输入流提供缓冲功能,以及mark()和reset()功能”。
DataInputStream :是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据。
FilterInputStream 源码(基于jdk1.7.40)
package java.io;
/**
* FileterInputStream 过滤器字节输入流 、本身什么事都没有做、只是简单的重写InputStream的所有方法。
*/
public class FilterInputStream extends InputStream {
/**
* 接收构造函数传递进来的 InputStream具体实现类。
*/
protected volatile InputStream in;
/**
* 根据传入的InputStream具体实现类创建FilterInputStream、并将此实现类赋给全局变量 in、方便重写此实现类从InputStream继承的或重写的所有方法。
*/
protected FilterInputStream(InputStream in) {
this.in = in;
}
/**
* 具体InputStream实现类的read()方法、若子类自己实现的、则是子类的、若子类没有实现则用的是InputStream本身的方法。
*/
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();
}
}