16k闪存大脑3954634
2017-09-11 10:23
in,read(buf,0,buf.length)不是一次性读完吗?为什么还要使用while循环并且用0xff
0到buf.length的长度是你定义的byte数组的长度
你一次性最多读取的字节长度是byte数组长度,但是你的文件字节数往往是多于你定义的byte数组长度
所以就用到了for循环,0xff是取低八位,八位为一个字节!!!
望采纳QAQ
in,read(buf,0,buf.length)
这个方法的调用只会读取buf。length个字节 如果文件内容大于这个字节数量的话 一次性就读不完了
就需要循环读取了
for循环中的bytes是限定了所能存储的数据大小的,如果读取到的字节大小超过了你循环中的大小,那么后面的数据就读取不到了。 但是利用while循环,只要In.read() 不是-1,程序就会一直执行,一直读取数据
数据很有可能比你那个buf字符数组大的多 不只一个length有可能千千万万个length 不循环,怎么读的完。
oxff是取低八位,因为读写都是以字节为单位的,而8位就是一个字节。
文件传输基础——Java IO流
133755 学习 · 1030 问题
相似问题