关于IO的问题read(byte[] b)

图片说明
为什么那个byte数组定义成5也能读出比5长的字符串
还有那个while方法也不太懂,这样判断一下不等于-1只会判断一次吧,下面的代码好像也没改变判断条件啊

循环每次读取5个字符。然后将filein文件指针往后移动,直到没有,返回-1

不是有循环么