这一段没看懂
来源:3-4 文件上传代码的实现
weixin_慕瓜9083905
2020-01-15 21:58:26
int len = 0;
byte[] b =new byte[1024];
while((len = is.read(b))!=-1) {
os.write(b, 0, len);
}
1回答
好帮手慕阿满
2020-01-16
同学你好,这段代码中,read()和write()方法的解释如下:
public int read(byte[] b):是从输入流中将 b.length(数组长度)个字节的数据读入一个 byte 数组中,参数b作为存储读取数据的缓冲区, 而返回值则是读入缓冲区的字节总数。
write(b,0,len) :第一个参数是指要写入的数组;第二个表示从该数组的第几个元素开始,这里是从0开始;第三个写到数组的第len个元素。由于数组并不一定的满的,这样,有多少就可以写多少了。 比如:
这个图片是1028,数组每次运送1024个过去,那最后写的时候,虽然数组是1024,最后里边却只放了4个元素,那么咱们写最后一个数组带过去的数据的时候,就只写最后的4个元素就可以了,而不应该把整个数组都写入进去。
这里执行的过程可以这样理解:调用read(b)方法,参数传入一个字节数组,此时把读到的内容都存入这个byte数组中。然后调用write方法把数组中的内容写出来(同时数组被清空了),依次循环,重复上面操作。直到最后一轮循环用n记录长度从0读到n刚好读完。直到读取完毕,读写操作完成。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题