如果read方法从输入流中读取一个数据字节, 当它必须读取一个字符时,它是否逐字节读取两次?作为一个char是2个byes?
答案 0 :(得分:1)
InputStream
对字节进行操作。它是Java中的底层I / O抽象。它可以读取单个字节或字节序列,具体取决于调用者请求的内容。但它对字符一无所知,因此它本身不能决定为字符读取两个字节。 Reader
必须要求此。
如果您需要阅读字符,请使用Reader
从InputStream
读取字符。
(同样,要读取序列化的Java对象,您可以使用ObjectInputStream
,再次从InputStream
读取它们。或者您可以使用Scanner
从数字中读取各种输入再次从InputStream
开始发短信。)
这种抽象的目的是责任分离 -
InputStream
提供字节流并处理所有基础逻辑(文件读取/网络/ ...)。Reader
将字节流转换为字符流,而不关心数据的来源。答案 1 :(得分:0)
根据在线https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read()提供的Oracle文档,它读取字节数组