InputStreamReader 和Buffered的用法

一 、InputStreamReader的用法

是字節流通向字符流的橋樑,封裝了InputStream裏面,她以高級的形式一次讀取一個一個字符,以文本格式輸入輸出,可以指定編碼格式;
一般用法:
   InputStremReader isr = new InputStreamReader(new FileInputStream("a.txt"));
   int ch;
  while((ch = isr.read()) != -1){
     System.out.println(char(ch));
}

二、BufferedReader的用法

所屬類庫:
  
   java.lang.Object
          java.io.Reader
                 java.io.BufferedReader

基本概念:
 
public class BufferedReader extends Reader
從字符輸入流中讀取文本,緩衝各個字符,從而實現字符、數組和行的高效讀取。可以指定緩衝區的大小,或者課使用默認的大小

通常 Reader所作的每個讀取都會導致底層字符或者字節流進行相應的讀取,而且提供了實用的readLine(),讀取一個文本行,從字符輸入流中讀取文本,緩衝各個字符。

一般用法:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\john\\Desktop\\a.txt")));
  String data = null;
  while((data = br.readLine())!= null){
   System.out.println(data);
  }

兩者比較:
 1.BufferedReader 用法比InputStreamReader要複雜,複雜的存在必然會導致優勢存在,InputStreamReader是一個一個字符讀取的,每次讀取都會執行一次IO,IO操作很浪費時間,這就導致程序效率降低,而BufferedReader很好的解決了這個問題,他可以一層次讀取大量的數據,大大減少了IO次數,提升效率。
 2.字符流處理的單元爲2個字節的Unicode字符,分別操作字符、字符數組或字符串,而字節流處理單元爲1個字節,操作字節和字節數組。所以字節流是java虛擬機將字節轉化爲2個字節的Unicode字符爲單位的字符構成的(1個漢子是兩個Unicode),所以它對多國語言之處比較好。如果是音頻文件、圖片、歌曲、就用字節流好點,如果是關係到中文,用字符流好點。
所有的文件的存儲都是字節的存儲,在磁盤上保留的並不是文件的字符,而是把字符編碼成字節,在存儲這些字節到磁盤。在讀取文件時,也是一個一個字節的讀取已形成字節序列。
字節流可用於任何類型的對象,包括二進制對象,而字符流只能處理字符或者字符串 2
字節流提供了處理任何類型的IO操作的功能,但他不能直接處理Unicode字符,而字符流可以。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章