Java.io之FilterInputStream

FilterInputStream是InputStream的伪实现。

先来看下FilterInputStream源代码,可以发现所有方法都调用了其修饰的InputStream的对应方法,而没有任何新实现,所以是伪实现,FilterInputStream的目的是其各种各样的子类实现了对inputStream丰富的修饰,为其添加了各种各样的功能(比如缓冲与数据转换等)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class FilterInputStream extends InputStream {
//被修饰的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();
}
}

FilterInputStream及其常用子类的类图如下:

ervyVO.png

之前的blog对其子类分别进行了解析

1. bufferedInputStream

使得inputStream具有缓冲的功能。

2. DateInputStream

能以一种与机器无关的方式,直接从地从字节输入流读取JAVA基本类型和String类型的数据。

Donate here.