1、read()是按字节读取输入流。
2、read(byte b[])是把输入流读到字节数组byte b[]。
看了一下read(byte b[])的源码,不也是循环调用read()这个方法呢?自己循环调用read()一个字节一个字节的读取,和read(byte b[])方法里循环调用read()一个字节一个字节的读取有何区别吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果你看的是InputStream实现read(byte b[])的源码,的确是循环调用read()这个方法。但是InputStream是一个抽象类,InputStream实现的read(byte b[])方法只是它的默认实现,很多InputStream的子类都会对read(byte b[])重写,例如FileInputStream。建议你看一看FileInputStream对read(byte b[])的实现源码,你会发现它并不是循环调用read(),FileInputStream的read(byte b[])会比read()效率高很多。
所以一般情况下,InputStream的子类会重写read(byte b[])方法,所以read(byte b[])比read()效率要高。