io流读取文件的疑惑

为什么非得
int i=0;
while((i= ff.read(b))!= -1){

}
而不是
while(ff.read(b) != -1){

}

要记录读到的长度,后面写的时候要用到

容我给你解释一下。
首先b是一个byte数组,数组有固定长度,比如1024。
那么在读数据时,会把数据读到b里面,但是可能数据只有1000个字节,那就意味着b的大小虽然是1024,但有效的长度为1000。
read方法的返回值代表实际读了多少个字节,如果是-1则代表一个字节没读到。
所以我们要把读到的长度i(i=1000)记录一下,后面从b里面取数据时,就知道只取1000个就行了。

这里的i记录的是从文件读取到的字节数或者字符数,后续其他操作是需要基于这个读取到的i进行的。