[十八]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的介紹
相關文章
相關標籤/搜索