Java.io.InputStream.read()方法是否将每个数据类型读取为byte?

时间:2017-08-14 09:48:29

标签: java io

如果read方法从输入流中读取一个数据字节,  当它必须读取一个字符时,它是否逐字节读取两次?作为一个char是2个byes?

2 个答案:

答案 0 :(得分:1)

InputStream对字节进行操作。它是Java中的底层I / O抽象。它可以读取单个字节或字节序列,具体取决于调用者请求的内容。但它对字符一无所知,因此它本身不能决定为字符读取两个字节。 Reader必须要求此。

如果您需要阅读字符,请使用ReaderInputStream读取字符。

(同样,要读取序列化的Java对象,您可以使用ObjectInputStream,再次从InputStream读取它们。或者您可以使用Scanner从数字中读取各种输入再次从InputStream开始发短信。)

这种抽象的目的是责任分离 -

  • InputStream提供字节流并处理所有基础逻辑(文件读取/网络/ ...)。
  • Reader将字节流转换为字符流,而不关心数据的来源。

答案 1 :(得分:0)

根据在线https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read()提供的Oracle文档,它读取字节数组