java InputStream read(byte b[])为什么比read()效率要高?

1、read是按字节读取输入流。
2、readbyte b[]是把输入流读到字节数组byte b[]。

看了一下readbyte b[]的源码,不也是循环调用read这个方法呢?自己循环调用read一个字节一个字节的读取,和readbyte b[]方法里循环调用read一个字节一个字节的读取有何区别吗?

如果你看的是InputStream实现readbyte b[]的源码,的确是循环调用read这个方法。但是InputStream是一个抽象类,InputStream实现的readbyte b[]方法只是它的默认实现,很多InputStream的子类都会对readbyte b[]重写,例如FileInputStream。建议你看一看FileInputStream对readbyte b[]的实现源码,你会发现它并不是循环调用read,FileInputStream的readbyte b[]会比read效率高很多。
所以一般情况下,InputStream的子类会重写readbyte b[]方法,所以readbyte b[]比read效率要高。

发表评论

电子邮件地址不会被公开。 必填项已用*标注