Closeable、Flushable、Appendable三个接口都是比较基础和比较简单的接口。
Closeable接口
Closeable接口继承了AutoCloseable接口,实现了Closeable接口的类也支持try-with-resources自动释放资源。Closeable接口内只定义了一个close方法:
public void close() throws IOException;
当close()方法被调用时,stream对象持有的资源被释放,任何实现了这个类都可以调用close()来进行资源的释放。
InputStream、OutputStream、Reader、Writer四个抽象类都实现了Closeable接口,
它们的子类也都可以直接调用close()释放资源,不过很多实现类都重写了close()方法
当资源关闭失败时,会抛出IOException
Flushable接口
Flushable接口内也只定义了一个flush方法:
void flush() throws IOException;
当这个方法被调用时,会将缓存中的数据写入到流中
执行失败时,会抛出IOException
Appendable接口
该接口并不是java.io包中的,而是java.lang包中的,但是很多java.io中的类都实现了该接口。看JDK API 说明,意思是如果某个类的实例打算接收取自Formatter的格式化输出,那么必须实现该接口
定义了三个方法:
//向此 Appendable 添加指定字符。
Appendable append(char c) throws IOException;
//向此 Appendable 添加指定的字符序列。
Appendable append(CharSequence csq) throws IOException;
//向此 Appendable 添加指定字符序列的子序列。
Appendable append(CharSequence csq, int start, int end) throws IOException
对Appendable接口并没有很深的理解,暂时只能先这样了,后续再补充完善吧。