FileInputStream 類與 FileReader 類的區別

 FileInputStream 類與 FileReader 類的區別:java

兩個類的構造函數的形式和參數都是相同的,參數爲 File 對象或者表示路徑的 String ,它們到底有何區別呢?數組

FileInputStream :以字節流方式讀取;服務器

FileReader :把文件轉換爲字符流讀入;函數

InputStream提供的是字節流的讀取,而非文本讀取,這是和Reader類的根本區別。用Reader讀取出來的是char數組或者String ,使用InputStream讀取出來的是byte數組。編碼

Reader類及其子類提供的字符流的讀取charinputStream及其子類提供字節流的讀取byte,因此FileReader類是將文件按字符流的方式讀取,FileInputStream則按字節流的方式讀取文件;InputStreamReader能夠將讀如stream轉換成字符流方式,是readerstream之間的橋樑spa

最初Java是不支持對文本文件的處理的,爲了彌補這個缺憾而引入了ReaderWriter兩個類。操作系統

FileInputStream 類以二進制輸入 輸出, I/O 速度快且效率搞,可是它的 read ()方法讀到的是一個字節,很不利於人們閱讀。 而 FileReader 類彌補了這個缺陷,能夠以文本格式輸入輸出,很是方便;好比能夠使用 while((ch = filereader.read())!=-1 ) 循環來讀取文件;能夠使用BufferedReader 的 readLine() 方法一行一行的讀取文本。 當咱們讀寫文本文件的時候,採用 Reader 是很是方便的,好比 FileReader , InputStreamReader 和 BufferedReader 。其中最重要的類是 InputStreamReader ,它是字節轉換爲字符的橋樑。 你能夠在構造器中指定編碼的方式,若是不指定的話將採用底層操做系統的默認編碼方式,例如 GBK 等。 FileReader 與 InputStreamReader 涉及編碼轉換 指定編碼方式或者採用 os 默認編碼 ,可能在不一樣的平臺上出現亂碼現象!而 FileInputStream 以二進制方式處理,不會出現亂碼現象 若是處理純文本文件,建議使用 FileReader ,由於更方便,也更適合閱讀;可是要注意編碼問題!其餘狀況(處理非純文本文件),FileInputStream是惟一的選擇;FileInputStream是進Socket通信時會用到不少,如將文件流是Stream的方式傳向服務器!.net

相關文章
相關標籤/搜索