JAVAIO編程——轉換流

作用:爲了方便處理字節流與字符流之間的轉換,提供了兩個類:OutputStreamWriter,InputStreamReader

public class OutputStreamWriter
extends Writer
OutputStreamWriter是從字符流到字節流的橋接器:使用指定的charset將寫入其中的字符編碼爲字節。 它使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認字符集。 
每次調用write()方法都會導致在給定字符上調用編碼轉換器。 生成的字節在寫入底層輸出流之前在緩衝區中累積。 請注意,傳遞給write()方法的字符不會被緩衝。 

爲了獲得最高效率,請考慮在BufferedWriter中包裝OutputStreamWriter,以避免頻繁的轉換器調用。 例如: 

  Writer out
   = new BufferedWriter(new OutputStreamWriter(System.out)); 

在這裏插入圖片描述

public class InputStreamReader
extends ReaderInputStreamReader是從字節流到字符流的橋接器:它使用指定的charset讀取字節並將其解碼爲字符。 它使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認字符集。 
每次調用一個InputStreamReader的read()方法都可能導致從底層字節輸入流中讀取一個或多個字節。 爲了實現字節到字符的有效轉換,可以從基礎流中提取比滿足當前讀取操作所需的更多字節。 

爲了獲得最高效率,請考慮在BufferedReader中包裝InputStreamReader。 例如: 

  BufferedReader in
   = new BufferedReader(new InputStreamReader(System.in)); 

在這裏插入圖片描述
通過繼承關係可以發現,他們都是字符流的子類,同時可以接受nputStream和OutputStream的實例

private static void outpute() throws IOException {
        //定義要進行輸出的磁盤完成路徑
        File file = new File("D:" + File.separator + "test-new.txt");
        if (!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        OutputStream fileOutputStream = new FileOutputStream(file);
        Writer outputStreamWriter = new OutputStreamWriter(fileOutputStream);
        outputStreamWriter.write("wwww.cctv.com");
        outputStreamWriter.append("/nfffff");
        outputStreamWriter.close();
    }

這種操作在一些系統類庫操作中比較常見,有些時候系統只會給用戶字節流,但爲了方便處理需要字符流的轉換

FileInputStream和FileOutputStream繼承結構
在這裏插入圖片描述
FileReader和FileWriter繼承結構
在這裏插入圖片描述

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