为了账号安全,请及时绑定邮箱和手机立即绑定

`InputStream` 和 `Reader` 本质上是一样的,`OutputStream`

`InputStream` 和 `Reader` 本质上是一样的,`OutputStream`

偶然的你 2022-11-30 16:37:15
在 Java中 InputStream,OutputStream处理 byte[],Reader和Writer.char[]他们的输入或输出是否本质上具有相同的值byte[]?char[](这是我的印象,因为 IO 中的一个 char 和一个 byte 具有相同的值)换句话说,are InputStreamand Readeressentially same,are OutputStreamand Writeressentially same?
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

它们本质上并不相同,但它们对不同类型的数据执行相同类型的操作。

InputStreamOutputStream字节为单位工作。在处理非文本信息(例如图像)时,您会使用它们。

ReaderWriter角色中工作。您会在处理文本信息时使用它们。

所以“是”和“不是”。:-)InputStreamReader都用于读取信息(分别为字节流或字符流),并且OutputStreamWriter都用于写入信息(分别为字节流或字符流)。您使用哪种取决于您处理的数据类型。流是面向字节的。读者/作者以性格为导向。

两种数据之间存在桥接类:

  • InputStreamReader从 an 中读取并使用 a (明确提供或按名称提供)InputStream将字节转换为字符。CharSet

  • OutputStreamWriter相反:将字符转换为字节(再次通过 a CharSet)并将字节写入OutputStream.

...但是大多数Reader/Writer子类读取/写入已经基于字符的源/目标,因此根本不处理字节。例如,StringReader从字符串中读取字符。由于源(字符串)已经是基于字符的,因此Reader永远不会处理字节,只处理字符。


查看完整回答
反对 回复 2022-11-30
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

是的,你有正确的想法。标准类InputStreamReaderOutputStreamWriter充当从字节流接口到字符流接口的适配器,只需要指定一个 Charset(通常是 UTF-8)。该 Charset 将用于将传入字节转换为 Java 的 UTF-16 字符类型,因此值得注意的是,从 InputStream 和 Reader 读取的实际字节始终相同是不正确的。

InputStream 通常用于读取任何类型的数据,而 Reader 仅适用于读取文本数据。


查看完整回答
反对 回复 2022-11-30
  • 2 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信