简介

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他们的构造方法


​​[十八]JavaIO之FileReader 和 FileWriter_构造方法​​


很清楚的看得出来


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装饰

​​​[十八]JavaIO之FileReader 和 FileWriter_路径名_02​​




总结


​​[十八]JavaIO之FileReader 和 FileWriter_构造方法_03​​


FileReader 和 FileWriter继承了InputStreamReader 和OutputStreamWriter

他们本身就是InputStreamReader 或者OutputStreamWriter

他们只是new   InputStreamReader 或者OutputStreamWriter的简化形式

使用这两个类,只需要清楚他们的构造方法即可

想要深入理解,可以在翻看下InputStreamReader 和OutputStreamWriter的介绍