为了账号安全,请及时绑定邮箱和手机立即绑定

关于io字节流问题

59dc86b50001c97c10011334.jpg
59dc86b400014e8810011334.jpg
请问关于这两种方法我的疑问是
两图中的方法 第二个相对于第一个到底有什么好处 以及如何理解

正在回答

3 回答

就是通过while循环,read的指针不断往后移,开始是开足马力每次都length长度,只有可能到最后一次,read不足length。由此实现只需要开辟一个很小空间的byte[]就可以读入很多的字节

1 回复 有任何疑惑可以回复我~

感觉就是 

第一种方法无论你读取的文件有多大  他就会读取到byte数组满了以后就不会再读取了   所以就只读取出来byte所能存放的那么多的字节

第二种方法是循环的向byte数组中读取数据,一直读取到文件结尾,也就是read方法返回-1的时候

说到好处也就是第二个方法可以设置较小的数组读取完较大的文件,

因为第一种方法有着数组大小的控制,想要读取完一个未知文件的话 就要设置一个较大的数组

0 回复 有任何疑惑可以回复我~

第一个设置的byte数组设置的长度足够大,所以能够一次性能够读完

但是第二个的设置多了一个while , 即可能一个BYTE数组没法一次性读完,所以需要加上判断条件

0 回复 有任何疑惑可以回复我~
#1

hy_wang 提问者

相比于第一个 请问第二个 如果in中的字节比buf中的多的话,是不是和第一个一样。最多只能读buf.length个字节,其他的就是缺失了吗。还有就是字节标识是不是从 0 开始 至 buf.length 请问是吗
2017-10-12 回复 有任何疑惑可以回复我~
#2

慕标7443549 回复 hy_wang 提问者

第二个中 int是返回一共读入到字节数组的个数,因为可能你所要读取的字节 一个字节数组不够用,所以需要读取到数组中很多次,而int就是你读取到数组中的个数,前几次,因为已经读满了数组,所以int其实和数组的长度是一致,最后一次可能数组不会读满,则int为填充到字节数组中的个数,继续往下读则会出现-1的情况,则结束
2017-10-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
文件传输基础——Java IO流
  • 参与学习       133634    人
  • 解答问题       1030    个

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

进入课程

关于io字节流问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信