永发信息网

while((len=in.read(buffer))>0)out.write(buffer,0,len)为什么是while而不是if

答案:1  悬赏:0  手机版
解决时间 2021-03-23 18:14
while((len=in.read(buffer))>0)out.write(buffer,0,len)为什么是while而不是if
最佳答案
因为io流中到底要读入多少数据事先并不知道,就比如你从一个文档中读内容,内容长短并不确定,while循环就是让不断的向缓存中读,知道读完整个文档为止。如果你用if,在满足条件的情况下,if后边的语句只执行一次,假设此时buffer中只存储了文档中的第一行内容,那你文档中后边的内容都不准备要了吗?所以if不行,因为它后边的语句最多执行一次,不能保证能读完整个文件!追问感谢回答!
还有点疑问:每次while循环都执行一次write(buffer,0,len),len是从1一直增加到数据长度N的吗,假设数据长度N,第一次write(buffer,0,1),第二次write(buffer,0,2)....第N次write(buffer,0,N)每次写都会覆盖前一次写过的数据吗?追答是这样的,举个例子来说吧。假如你要读取的文件内容如下:
asfdfsda
hghjh
fdf
rewterter
说一下in.read(buffer)的返回值,返回值是你读进缓冲区的字符个数,也就是
如果此时读入的是第一行,那么len就等于8,是第二行那么len就等于5,第三行是3,第四行是9,第五行是结尾那么读入的没有东西,len就是0,此时不满足循环条件,那么跳出循环,读取文件结束。len是多少是看读入buffer了多少个字符,每次都是变化的!而由于每次都是读入多少就写出多少,也就是读入的是什么,写出的就是什么,所以并不会出现你所说的覆盖情况!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
佛山职业技术学院3A分数线
青春派电视剧经典台词,青春派里面最后居然念
they're完全形式怎么写?
崖柏和香柏佛珠手串区别在哪?哪个更香?听说
外地车辆在宁波贴了机动车不按规定停放提醒单
礼物有关的美文,有关送别的美文或诗歌
得福焊接怎么去啊,有知道地址的么
下列数据最接近实际的是A.一个小铁钉受到的重
井关868全喂履带收割机怎么样
男性性欲下降老瞌睡是怎么回事
从上海南汇到江苏连云港怎么做长途车
骚客是什么意思?
总裁豪门激荡小萌妻我怎么找不到我要找的书
画出电动机主电路和控制回路
跟一个女人睡了四天了 她始终不给我 难道她不
推荐资讯
电信卡能充值六币吗
龙口市成达食品冷藏厂这个地址在什么地方,我
一人张大嘴,有个章字是什么成语
承德市二处是哪个部门
有关一世温暖一世情的句子
电脑怎么查看剩余内存,如何查看电脑的内存剩
纳兰容若经典诗词爱情,纳兰容若、描写春天的
已知如图,四边形ABCD是矩形,对角线AC、BD相
遵义川能电力物资公司怎么去啊,有知道地址的
去香港想买化妆品的话去哪里买的最多哪站
法院拍卖车可以过户吗,法院拍卖的车可以直接
离婚协议上判决房屋分割 房产证是我的名子 请
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?