Reader和InputStream有什么区别?

Reader和InputStream有什么区别? 何时使用什么? 如果我可以使用Reader来读取字符,为什么我会使用InputStream,我想读对象?

InputStream是从资源获取信息的原始方法。 它逐字节地抓取数据而不执行任何types的翻译。 如果您正在读取图像数据或任何二进制文件,则这是要使用的stream。

Reader是为字符streamdevise的。 如果您正在阅读的信息是全部文本,则阅读器将为您处理字符解码,并为您提供来自原始inputstream的Unicode字符。 如果您正在阅读任何types的文本,则这是要使用的stream。

您可以使用InputStreamReader类来包装InputStream,并将其转换为Reader。

Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); 

InputStreams用于从stream中读取字节。 所以它们对二进制数据很有用,比如图像,video和序列化对象。

读者另一方面是字符stream,所以他们最好用来读取字符数据。

一个接受字节,另一个接受字符。