在Java中,InputStream
和OutputStream
处理byte[]
,以及Reader
和Writer
与 char[]
。
它们的输入或输出
byte[]
和char[]
本质上具有相同的值吗? (这是我的印象,因为IO中的char和byte具有相同的值)换句话说,
InputStream
和Reader
本质上是相同的,OutputStream
和Writer
本质上是相同的> 本质上是一样的?
最佳答案
它们本质上并不相同,但它们对不同类型的数据执行相同的操作。
InputStream
和 OutputStream
以字节为单位。您可以在处理非文本信息(例如图像)时使用它们。
Reader
和 Writer
以字符工作。您在处理文本信息时会使用它们。
所以"is"和“否”。 :-) InputStream
和 Reader
都用于读取信息(分别是字节流或字符流),而 OutputStream
和 Writer
都用于写入信息(分别是字节流或字符流)。您使用哪个取决于您正在处理什么类型的数据。流是面向字节的。读者/作者以人物为导向。
两种数据之间有桥接类:
-
InputStreamReader
从InputStream
读取并使用CharSet
(显式提供或按名称提供的)将字节转换为字符。 -
OutputStreamWriter
反之亦然:将字符转换为字节(再次通过CharSet
)并将字节写入OutputStream
。
...但大多数 Reader
/Writer
子类读取/写入的源/目标已经基于字符,等等根本不处理字节。例如,StringReader
从字符串中读取字符。由于源(字符串)已经基于字符,因此Reader
不会处理字节,而只处理字符。
关于java - `InputStream`和 `Reader`本质上是相同的, `OutputStream`和 `Writer`本质上是相同的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56184368/