问答详情
源自:4-2 字节流之文件输入流FileInputStream-2

为什么一次无法容纳下的时候就要用while循环

in,read(buf,0,buf.length)不是一次性读完吗?为什么还要使用while循环并且用0xff

提问者:16k闪存大脑3954634 2017-09-11 10:23

个回答

  • 我是叶霖
    2018-05-22 21:21:08

    0到buf.length的长度是你定义的byte数组的长度

    你一次性最多读取的字节长度是byte数组长度,但是你的文件字节数往往是多于你定义的byte数组长度

    所以就用到了for循环,0xff是取低八位,八位为一个字节!!!

    望采纳QAQ

  • qq_安居旧巷猫患者_0
    2017-10-21 17:05:34

    in,read(buf,0,buf.length) 

    这个方法的调用只会读取buf。length个字节  如果文件内容大于这个字节数量的话 一次性就读不完了

    就需要循环读取了

  • Queen丶Star
    2017-09-13 06:12:57

    for循环中的bytes是限定了所能存储的数据大小的,如果读取到的字节大小超过了你循环中的大小,那么后面的数据就读取不到了。 但是利用while循环,只要In.read() 不是-1,程序就会一直执行,一直读取数据

  • 慕粉1950047581
    2017-09-11 13:01:22

    数据很有可能比你那个buf字符数组大的多 不只一个length有可能千千万万个length  不循环,怎么读的完。

    oxff是取低八位,因为读写都是以字节为单位的,而8位就是一个字节。