关于io字节流问题

来源:4-2 字节流之文件输入流FileInputStream-2

hy_wang

2017-10-10 16:37

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

写回答 关注

3回答

  • 一枚flora
    2017-10-27 20:37:13

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

  • qq_安居旧巷猫患者_0
    2017-10-21 16:59:43

    感觉就是 

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

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

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

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

  • 慕标7443549
    2017-10-11 20:26:15

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

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

    慕标7443... 回复hy_wan...

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

    2017-10-13 08:25:18

    共 2 条回复 >

文件传输基础——Java IO流

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

133754 学习 · 1030 问题

查看课程

相似问题