[十八]JavaIO之FileReader 和 FileWriter


简介

FileReader FileWriter 都是提供操做文件的便捷类
这两个类的实现很是的简单

原理

回忆下以前的InputStreamReader和OutputStreamWriter
InputStreamReader 是转换流,字节通往字符的桥梁
OutputStreamWriter是转换流 字符通向字节的桥梁
他们是适配器模式,
InputStreamReader目标是Reader
OutputStreamWriter目标是Writer
InputStreamReader接受一个InputStream
OutputStreamWriter 接受一个OutputStream
而后将他们用起来像是Reader或者Writer
再想一下FileInputStream和FileOutputStream
FileInputStream 是InputStream
FileOutputStream是OutputStream
FileInputStream和FileOutputStream 又能够经过File String路径名或者文件描述符构造


因此,若是想要对文件进行字符操做
你确定想获得下面的方式
new InputStreamReader(new FileInputStream(File/String/FileDescriptor)  )

如今,看下FileReader 和  FileWriter他们的构造方法
image_5b9a0066_725f
很清楚的看得出来
FileReader 和  FileWriter全部的构造方法都是作了一件事情
那就是调用 InputStreamReader   和 OutputStreamWriter的构造方法
也就是:
new InputStreamReader(new FileInputStream(File/String/FileDescriptor)  )
或者
new OutputStreamWriter(new FileOutputStream(File / String /fd));

由于他们是InputStreamReader 和 OutStreamWriter的子类
因此用的是super调用

另外是否还记得InputStreamReader 以及OutputStreamWriter的构造方法么
他们还可以设置字符
可是FileReader和FileWriter却没有,显然
他们是简化版的形式,他们老是假定默认字符编码和默认字节缓冲区大小都是适当的
因此若是才有必要的状况下
你应该本身去建立InputStreamReader 以及OutputStreamWriter的对象,指定编码
而且能够增长缓冲 BufferXXX装饰

image_5b9a0066_3f50


总结


image_5b9a0066_1db

FileReader 和 FileWriter继承了InputStreamReader 和OutputStreamWriter
他们自己就是InputStreamReader 或者OutputStreamWriter
他们只是new   InputStreamReader 或者OutputStreamWriter的简化形式
使用这两个类,只须要清楚他们的构造方法便可
想要深刻理解,能够在翻看下InputStreamReader 和OutputStreamWriter的介绍
相关文章
相关标签/搜索