A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

字符流进行文件复制时,需要定义数组,用read()把文件读入到数组中,再将数组写入其他文件中。而字节流为什么不需要定义数组啊?而且是直接将read()的返回值写入文件中,为什么啊?菜鸟求大神指点啊

5 个回复

正序浏览
本帖最后由 哈达洋 于 2014-10-18 16:37 编辑

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

谢谢啊:loveliness:
回复 使用道具 举报
数组是针对字符的!
回复 使用道具 举报
原来如此,谢谢啊
回复 使用道具 举报
字符流如果用了Buffere就不用数组了吧,那个是定义String line,因为一行一行读最方便,line是记录读到的一行数组。字节流不用数组,因为数组就是缓冲区
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马