IO流學習總結(下) 轉換流(重要)

2021-08-19 07:55:48 字數 1590 閱讀 5133

參考[大佬的部落格][

分為兩種:

inputstreamreader 位元組流轉字元流

outputstreamwriter 字元流轉位元組流

*寫入資料–>記憶體中的字元資料–>字元流–>outputstreamwriter–>位元組流–>網路傳輸(或檔案儲存)

讀取資料

可以清楚地發現,不管如何操作,最終全部是以位元組的形式儲存在檔案中或者進行網路傳輸。*

filewriter和filereader的說明

從jdk文件中可以知道fileoutputstream是outputstream的直接子類。fileinputstream也是inputstream的直接子類,但是在字元流檔案的兩個操作類卻有一些特殊,filewriter並不直接是writer的子類,而是outputstreamwriter的子類,而filereader也不直接是reader的子類,而是inputstreamreader的子類,那麼從這兩個類的繼承關係就可以清楚的發現,不管是使用位元組流還是字元流實際上最終都是以位元組的形式操作輸入輸出流的。也就是說,傳輸或者從檔案中讀取資料的時候,檔案裡真正儲存的資料永遠是位元組。
轉換流的作用:

1. 如果目前所 獲取到的是乙個位元組流需要轉換字元流使用,這時候就可以使用轉換流。 位元組流—-> 字元流

2. 使用轉換流可以指定編碼表進行讀寫檔案。

inputstreamreader建構函式可以傳遞位元組流

很顯然可以包裝我們的位元組流,自動的完成節流編碼和解碼的工作。

//使用輸入位元組流的轉換流指定碼表進行讀取檔案資料

public static void readtest2() throws ioexception

}**outputstreamwriter** 只給了我們乙個位元組流 我們要用字元流來輸出

//使用輸出位元組流的轉換流指定碼表寫出資料

public static void writetest2() throws ioexception

總結:

1、重點:操作的終端點實際上都是以位元組的形式進行的。

2、filewriter和filereader兩個子類的定義,其實是中間使用了轉換類。

3. 可以使用緩衝流來

需要注意的事項

inputstreamreader、outputstreamwriter實現從位元組流到字元流之間的轉換,使得流的處理效率得到提公升,但是如果我們想要達到最大的效率,我們應該考慮使用緩衝字元流包裝轉換流的思路來解決問題。比如:

bufferedreader in = new bufferedreader(new inputstreamreader(system.in));

public static void readtest() throws ioexception

}

IO流之轉換流

查閱outputstreamwriter的api介紹,outputstreamwriter 是字元流通向位元組流的橋梁 可使用指定的字元編碼表,將要寫入流中的字元編碼成位元組。它的作用的就是,將字串按照指定的編碼表轉成位元組,在使用位元組流將這些位元組寫出去。public static void w...

IO流(字元流 轉換流)

字元輸入流 public inputstreamreader inputstream in 預設的編碼格式 一般使用這個 public inputstreamreader inputstream in,string charsetname 指定的編碼格式 字元輸入流 位元組輸入流 編碼表 將位元組流...

Java之IO流學習總結 下

2.位元組流 inputstream 讀 outputstream 寫 由於位元組是二進位制資料,所以位元組流可以操作任何型別的資料,值得注意的是字元流使用的是字元陣列char而位元組流使用的是位元組陣列byte。下面來看乙個位元組流讀寫檔案的簡單例子。清單7,使用位元組流讀寫文字檔案 privat...