InputStreamReader和BufferedReader的區別


.InputStream、OutputStream

處理字節流的抽象類

InputStream 是字節輸入流的所有類的超類,一般我們使用它的子類,如FileInputStream等.

OutputStream是字節輸出流的所有類的超類,一般我們使用它的子類,如FileOutputStream等.

 

2.InputStreamReader  OutputStreamWriter

處理字符流的抽象類

InputStreamReader 是字節流通向字符流的橋梁,它將字節流轉換為字符流.

OutputStreamWriter是字符流通向字節流的橋梁,它將字符流轉換為字節流.

 

3.BufferedReader BufferedWriter

BufferedReader 由Reader類擴展而來,提供通用的緩沖方式文本讀取,readLine讀取一個文本行,

從字符輸入流中讀取文本,緩沖各個字符,從而提供字符、數組和行的高效讀取。

BufferedWriter  由Writer 類擴展而來,提供通用的緩沖方式文本寫入, newLine使用平台自己的行分隔符,

將文本寫入字符輸出流,緩沖各個字符,從而提供單個字符、數組和字符串的高效寫入。

 

InputStream能從來源處讀取一個一個byte,
所以它是最低級的,
例:

 

import <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.io.*;     
public class Main {     
    public static void main(String[] args) {     
             
        try {     
            FileInputStream fis=new FileInputStream("d://desktop//test.txt");     
            int i;     
                 
            try {     
                while((i=fis.read()) != -1){     
                    System.out.println(i);     
                }     
                /*假設test.txt檔裡頭只有一個文字 "陳" ,且其編碼為 utf8   
                 * 輸出   
                 *  233   
                    153   
                    179   
                 */    
            } catch (IOException e) {     
                // TODO Auto-generated catch block     
                e.printStackTrace();     
            }     
                 
                 
        } catch (FileNotFoundException e) {     
            // TODO Auto-generated catch block     
            e.printStackTrace();     
        }     
                     
    }     
}   

 InputStreamReader
 InputStreamReader封裝了InputStream在里頭,
 它以較高級的方式,一次讀取一個一個字符,
 下例是假設有一個編碼為utf8的文檔,
 其內容只有一個中文字 "陳"

 

import java.io.*;     
public class Main {     
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {     
                     
            FileInputStream fis=new FileInputStream("d://desktop//test.txt");     
            try {     
                InputStreamReader isr=new InputStreamReader(fis,"utf8");     
                int i;     
                while((i=isr.read()) != -1){     
                    System.out.println((char)i);  //輸出  陳     
                }     
            } catch (Exception e) {     
                // TODO Auto-generated catch block     
                e.printStackTrace();     
            }                                            
                     
    }     
}    

BufferedReader
BufferedReader則是比InputStreamReader更高級,
它封裝了StreamReader類,
一次讀取取一行的字符

 

import java.io.*;     
public class Main {     
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {     
                     
            FileInputStream fis=new FileInputStream("d://desktop//test.txt");     
                 
            try {     
                InputStreamReader isr=new InputStreamReader(fis,"utf8");                     
                BufferedReader br=new BufferedReader(isr);     
                     
                String line;     
                while((line=br.readLine()) != null){     
                    System.out.println(line);     
                }     
            } catch (Exception e) {     
                // TODO Auto-generated catch block     
                e.printStackTrace();     
            }                                            
                     
    }     
}    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM