关于os.write(b, 0, len)这一句

关于os.write(b, 0, len)这一句

while ((len = is.read(b)) != -1) {  

os.write(b, 0, len);

}

1、当读到流的末尾时is.read(b)返回的是-1,也就是len也为-1。

2、但是os.write(b, 0, len); 的意义是:将b 数组中的从偏移量0开始的 len 个字节写入到os输出流,此时的len合法吗?为什么?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
芝芝兰兰 2019-04-02 11:06:31

同学你好。

write(byte[] b, int off, int len) 方法是从指定字节数组的偏移量开始将len字节写入此输出流。

如果off为负,或者len为负,或者off+len大于数组b的长度,则抛出IndexOutOfBoundsException。

但这里while的循环继续的条件就是len不等于-1,len为-1时就不会执行os.write(b, 0, len); 了呢。

如果还有疑问,可以继续提问。如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 提问者 yangyang533 #1
    这个可以理解,我的意思是说当读到流的最后的时候,可能读到流的末尾的时候数组b还没有读满,这时is.read(b)就返回-1了,那这最后一个数组中的数据不就是写不到os中了吗?
    2019-04-02 11:11:15
  • 芝芝兰兰 回复 提问者 yangyang533 #2
    os是输出流,b是用来缓存的字节数组,is是输入流。这里 is.read(b) 就是在进行把b读入到 is 操作。如果读到了b的末尾,在执行判断的时候,is就把b中的内容都读入了,读入后才返回-1 这时循环才结束。
    2019-04-02 11:59:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师