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 仅适用于读取文本数据。
添加回答
举报