黑马程序员技术交流社区

标题: 通过字节流缓冲区复制图片为什么不需要定义数组? [打印本页]

作者: 齐宁宁    时间: 2014-9-24 21:37
标题: 通过字节流缓冲区复制图片为什么不需要定义数组?
字符流进行文件复制时,需要定义数组,用read()把文件读入到数组中,再将数组写入其他文件中。而字节流为什么不需要定义数组啊?而且是直接将read()的返回值写入文件中,为什么啊?菜鸟求大神指点啊
作者: 霜林醉zhx    时间: 2014-9-25 00:16
字符流如果用了Buffere就不用数组了吧,那个是定义String line,因为一行一行读最方便,line是记录读到的一行数组。字节流不用数组,因为数组就是缓冲区
作者: 齐宁宁    时间: 2014-9-25 09:55
原来如此,谢谢啊
作者: SenGoo    时间: 2014-10-18 10:00
数组是针对字符的!
作者: 齐宁宁    时间: 2014-10-18 14:55
SenGoo 发表于 2014-10-18 10:00
数组是针对字符的!

谢谢啊:loveliness:
作者: 哈达洋    时间: 2014-10-18 16:18
本帖最后由 哈达洋 于 2014-10-18 16:37 编辑

至于为什么不需要,是因为字节流缓冲区内部本来就封装了数组。对于BufferedInputStream,它的read()方法,实际是从它内部数组中读取一个字节,而它内部是相当于用的输入流的read(buf,0,len)方法从文件中读数据到内部数组中。对于BufferedOutputStream,它内部也封装了数组,它的write(int len)方法,实际上是将元素一个一个写到内部数组中,然后通过内部的流采用write(buf,0,len)的方法,一次性写多个字节到文件中。如果你定义的数组长度大于8k的话,那么采用你自定义数组的方式的效率就会更高,因为他们内部封装的数组长度默认是8k。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2