2017-08-14 66 views
0

如果读取方法从输入流中读取一个字节的数据,那么当它必须读取一个字符时,它是否会逐字节读取两次?作为一个字符是2个字节?does Java.io.InputStream.read()方法读取每个数据类型为字节?

+0

你为什么不以DataInputStream类使用readChar? – tommybee

+0

所有数据都是字节,'read()'返回一个字节。 – Kayaman

+0

它*不*必须'读'字符'。它被指定读取字节,这就是它的作用。你的问题没有意义。 – EJP

回答

1

InputStream对字节进行操作。它是Java中的基础I/O抽象。它可以读取单个字节或一系列字节,具体取决于调用者请求的内容。但它对字符一无所知,所以它本身不能决定为字符读取两个字节。 A Reader将不得不请求这一点。

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

(同样,读取序列化的Java对象,你会使用ObjectInputStream,这再次从InputStream读取他们。或者你也可以从InputStream使用Scanner从数字到文本读取各种输入一次。)

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

  • InputStream提供的字节流,并处理所有底层逻辑(文件读出/网络/ ...)。
  • Reader将字节流转换为字符流,并且不关心数据来自何处。