FileReader是用於讀取字符文件的類,該類的構造方法假設默認的字符編碼方式和默認的字節緩衝區大小都是合適的,若是咱們想要本身指定,能夠在構造器中傳入一個在FileInputStream之上構建的InputStreamReader。要讀取原始的字節流能夠使用FileInputStream,在使用時咱們通常使用BufferedReader包裹此類java
1 - 構造方法函數
//構造方法,基於指定讀取的文件名稱建立一個新的FileReader public FileReader(String fileName) throws FileNotFoundException { super(new FileInputStream(fileName)); } //構造方法。基於指定的File對象建立一個新的FileReader public FileReader(File file) throws FileNotFoundException { super(new FileInputStream(file)); } //構造方法。基於待讀取的文件描述符對象建立一個新的FileReader public FileReader(FileDescriptor fd) { super(new FileInputStream(fd)); }
FileReader的三種構造函數都基於FileDescriptor、fileName或者File對象建立一個FileInputStream並把它做爲參數調用了InputStreamReader的構造方法InputStreamReader(InputStream in),該方法主要作了兩件事基於傳入的字節流FileInputStream對象和系統默認的編碼方式在類內部實例化了一個StreamDecoder對象,以後在FileReader中由它負責讀取底層字節字節數據並將之解碼爲字符數據輸出。源碼分析
由源碼可知,FileReader的全部功能都是基於父類InputStreamReader,他能夠簡單被當作是不能本身配置編碼方式的基於底層字節流FileInputStream的InputStreamReader的閹割版編碼