读取器和输入流之间有什么区别?

读取器和输入流之间有什么区别?何时使用什么?如果我可以使用Reader来读取字符,为什么我会使用输入流,我猜要读取对象?


答案 1

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

阅读器是为字符流设计的。如果您正在阅读的信息都是文本,则 Reader 将为您处理字符解码,并从原始输入流中为您提供 unicode 字符。如果您正在阅读任何类型的文本,这是要使用的流。

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

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

答案 2

输入流用于从流中读取字节。因此,它们对于图像,视频和序列化对象等二进制数据非常有用。

另一方面,读取器是字符流,因此它们最好用于读取字符数据。