Java 输入输出相关概念介绍(File、IO 流)(十九)(FilterWriter)

196 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情

上一篇文章我们介绍的是BufferedWriter,主要作用是为其他输出流提供缓存的功能。这篇文章我们继续介绍Writer 的子类:FilterWriter。

FilterWriter 的概念

通过名字我们可以看出来,FilterWriter 是字符过滤输出流。我们可以联想到另一个类似的类:FilterOutputStream,其实这两个类功能一样。但是JDK 中对于FilterOutputStream 的子类实现有好几个,但是FilterWriter 并没有现成的实现好的子类。

FilterWriter 类中没有什么可以值得讲的逻辑,但是我们要注意一点,FiterWriter 本身也是一个抽象类,只是简单地重写了一下父类的各个方法,同时提供了一个构造方法,需要我们传入某个流。

FilterWriter 的目的是为所有需要装饰的类提供标准,同时提供基本的方法,需要子类必须实现核心方法,但是继承FilterWriter 的类也最好定制自己独特的功能。

因为FilterWriter 在JDK 中没有现成的子类,对于字符输出过滤流目前为止,并没看到实际的用处。但是存在都是有原因的,这个类可以留作以后作为扩展使用。

FilterWriter 的构造方法

构造方法

// FilterWriter 类中声明的构造方法只有这一个,需要传入一个底层输出流然后构造FilterWriter 实例
protected FilterWriter(Writer out)

其他方法

因为FilterWriter 只是继承了Writer,简单地重写了一下父类中的方法,类内部本身并没有什么逻辑,所以FileterWriter 类内的方法和Writer 也很相似。但是为了便于读者理解,这里也简单地列举一些。

// 关闭流,释放资源
void close()
// 刷新这个流
void flush()
// 写入一个字符到构造函数传入的底层字符输出流中
writer(int c)
// 根据参数,将字符数组cbuf 中的一部分内容写入到构造函数中传入的流里面去
void write(char cbuf[], int off, int len)
// 功能同上,只不过参数是字符串
void write(String str, int off, int len)

总结

FilterWriter 类的使用目前可能并没有太多的应用,因为它本身是个抽象类,也就是定义一个“框架”给用户使用,所以这个可以不用做过多的了解,只是知道有这个类的存在即可。

但是我们在日常学习过程中,不能看到这个类或者实现使用的频率不高就不去做了解。因为在Java 中提供的内容,既然存在,都是有原因的。有时候可能是因为这个类“过时”了,又有可能是因为发现了bug 等等原因。我们在了解它们的过程中,除了类的本身,肯定还会接触到一些其他的经验,比如说作者的思想,设计的来源灵感等等,都可以为我们日后的工作中带来一些思考的。

接下来的文章我们将会继续介绍Writer 的其他子类。