课程
/后端开发
/Java
/文件传输基础——Java IO流
in,read(buf,0,buf.length)不是一次性读完吗?为什么还要使用while循环并且用0xff
2017-09-11
源自:文件传输基础——Java IO流 4-2
正在回答
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位就是一个字节。
举报
为您介绍IO流的使用,以及对象的序列化和反序列化的内容
5 回答为什么while((b=in.read())!=-1)会产生循环?
4 回答4.3中的Copy方法下为什么要有while?
1 回答关于while循环的疑惑
4 回答while循环是不是存在问题的
1 回答用循环的好处