2 回答

TA貢獻1818條經驗 獲得超3個贊
它們本質上并不相同,但它們對不同類型的數據執行相同類型的操作。
InputStream
并OutputStream
以字節為單位工作。在處理非文本信息(例如圖像)時,您會使用它們。
Reader
并Writer
在角色中工作。您會在處理文本信息時使用它們。
所以“是”和“不是”。:-)InputStream
和Reader
都用于讀取信息(分別為字節流或字符流),并且OutputStream
和Writer
都用于寫入信息(分別為字節流或字符流)。您使用哪種取決于您處理的數據類型。流是面向字節的。讀者/作者以性格為導向。
兩種數據之間存在橋接類:
InputStreamReader
從 an 中讀取并使用 a (明確提供或按名稱提供)InputStream
將字節轉換為字符。CharSet
OutputStreamWriter
相反:將字符轉換為字節(再次通過 aCharSet
)并將字節寫入OutputStream
.
...但是大多數Reader
/Writer
子類讀取/寫入已經基于字符的源/目標,因此根本不處理字節。例如,StringReader
從字符串中讀取字符。由于源(字符串)已經是基于字符的,因此Reader
永遠不會處理字節,只處理字符。

TA貢獻1895條經驗 獲得超7個贊
是的,你有正確的想法。標準類InputStreamReader和OutputStreamWriter充當從字節流接口到字符流接口的適配器,只需要指定一個 Charset(通常是 UTF-8)。該 Charset 將用于將傳入字節轉換為 Java 的 UTF-16 字符類型,因此值得注意的是,從 InputStream 和 Reader 讀取的實際字節始終相同是不正確的。
InputStream 通常用于讀取任何類型的數據,而 Reader 僅適用于讀取文本數據。
添加回答
舉報