Java學習之隨堂筆記系列——day18

1 字節緩衝流:也叫做高效流
    緩衝流:內部會再提供一個byte[]數組作爲緩衝區,提高讀寫效率。但是緩衝流自身沒有讀寫能力,需要我們在構造方法中傳遞一個對應的基礎流。
    實現思路:
        1、創建緩衝流對象
            BufferedInputStream bis=new BufferedInputStream(new FileInputStream(文件路徑));
            BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(文件路徑));
        2、調用read()或者write()的方法
        3、釋放資源

2、字符流
    編碼和解碼問題:
        編碼:將看的懂的轉換成看不懂就是編碼。
        解碼:將看不懂的轉換成看的懂就是解碼。
        編碼表:編碼和解碼都必須依賴一個碼錶,這個碼錶就是編碼表。
        常見的碼錶:
            ASCII:一個字符佔一個字節,不支持中文
            iso-8859-1:拉丁碼錶,歐洲使用。一個字符佔一個字節,不支持中文
            gbk/gb2132:國標碼,一個字符佔2個字節,支持中文。
            utf-8:萬國碼表,國際通用,一箇中文佔3個字節。(常用)
    轉換流:需要轉碼或者轉換流對象的時候用到。(用的很少)
        InputStreamReader:自身是字符流,是從字節流到字符流的橋樑:它讀取字節,並使用指定的charset將其解碼爲字符
            讀的過程:文件--->構造方法中的InputStream讀文件(讀字節)--->InputStreamReader--->字符     解碼的過程
        OutputStreamWriter:自身是字符流,是從字符流到字節流的橋樑:使用指定的charset將寫入的字符編碼爲字節
            寫的過程:程序(字符)--->OutputStreamWriter--->構造方法中的OutputStream寫數據(寫字節)--->文件   編碼的過程
        說明:下面的字符輸出流FileWriter和字符輸入流FileReader底層就是使用OutputStreamWriter和InputStreamReader

    字符輸出流:(重點*****)
        FileWriter extends OutputStreamWriter
        構造方法:
            FileWriter​(String fileName)    :根據一個字符串類型的文件路徑創建一個字符輸出流對象
            FileWriter​(String fileName, boolean append):根據一個字符串類型的文件路徑創建一個字符輸出流對象,參數2append表示是否追加
    字符輸入流:(重點*****)
        FileReader extends InputStreamReader
        構造方法:
            FileReader​(String fileName):根據一個字符串類型的文件路徑創建一個字符輸入流對象
        說明:FileReader​和FileWriter底層都是使用默認的字符集編碼。
    字符緩衝輸出流:
        BufferedWriter字符緩衝輸出流
                構造方法:
                    BufferedWriter​(Writer out)    :創建一個字符串緩衝輸出流對象,傳遞對應的基礎的字符輸出流,使用默認的緩衝區大小
                    BufferedWriter​(Writer out, int sz):創建一個字符串緩衝輸出流對象,傳遞對應的基礎的字符輸出流,參數2指定緩衝區大小
                成員方法:
                    void    close​()    :關閉流,先刷新。
                    void    flush​()    :刷新流。
                    void    newLine​():寫一行行分隔符。
                    void    write​(String str) :一次寫一個字符串,是繼承父類Writer的方法

        BufferedReader:字符緩衝輸入流對象
                構造方法:
                    BufferedReader​(Reader in):創建一個字符串緩衝輸入流對象,傳遞對應的基礎的字符輸入流,使用默認的緩衝區大小
                    BufferedReader​(Reader in, int sz):創建一個字符串緩衝輸入流對象,傳遞對應的基礎的字符輸入流,參數2指定緩衝區大小
                成員方法:
                    void close​():關閉流並釋放與之相關聯的任何系統資源。
                    String    readLine​():讀一行文字。特有的方法
3、案例

4、IO流總結
    輸入流:
        字節輸入流:FileInputStream--->BufferedInputStream(緩衝流,自身沒有讀寫功能)
        字符輸入流:FileReader--->BufferedReader(緩衝流,自身沒有讀寫功能)
    輸出流:
        字節輸出流:FileOutputStream--->BufferedOutputStream(緩衝流,自身沒有讀寫功能)
        字符輸出流:FileWriter--->BufferedWriter(緩衝流,自身沒有讀寫功能)

    如何選擇流對象:
        如果是讀寫文本文件,那麼首先考慮的是基礎的字符流。如果是讀寫非文本文件,那麼首先考慮的是基礎的字節流。
        如果想高效,那麼就選擇對應的緩衝流對象。如果想手動指定字符集,那麼選擇轉換流。

 

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