while((bytes = in.read(buf,0,buf.length))!=-1)這里有疑問
while((bytes = in.read(buf,0,buf.length))!=-1)
搞不明白,假如文件100字節(jié),數(shù)組buf容量80字節(jié),第一次讀完的時候bytes等于80,然后執(zhí)行完后邊的代碼,程序如何回到while循壞呢?
不是已經(jīng)這樣了嗎 bytes=80!=-1,不應(yīng)該是一個死循環(huán)嗎?有些理解不了這個
而且就算我現(xiàn)在當做能明白這個循環(huán)為什么能進行了,可buf數(shù)組在第一次循環(huán)的時候已經(jīng)被填滿了呀,第二次去循環(huán)的時候,是把剩下的20字節(jié)覆蓋進去嗎?而且in.read(buf,0,buf.length))這里第二個參數(shù)是“0”,也沒有看出來任何地方對這個參數(shù)有修改,程序怎么知道應(yīng)該是從81位開始讀呢?
2020-07-20
讀入緩沖區(qū)的總字節(jié)數(shù),如果沒有更多的數(shù)據(jù),因為文件的結(jié)尾已經(jīng)到達,
-1
。?剛查了下API文檔,一樓的回復(fù)太給力了,讓我也懂了
2019-04-02
read()方法返回的是下一個字節(jié)
2018-07-21
in.read(buf,0,buf.length),這個方法返回的是它讀取到的字節(jié)個數(shù)!
正如你假設(shè)的,文件100字節(jié),buf容量80字節(jié):
第一次讀取的時候是返回80;
第二次進入while的時候,文件讀取的字節(jié)是從第81個字節(jié)開始(讀取的時候文件有個指針一邊讀一邊移動的,前面老師講過),就是說文件還剩下20個字節(jié)可讀,所以這時候返回的字節(jié)是20;
第三次進入while的時候,文件已經(jīng)沒有內(nèi)容可讀了,所以返回的是-1;
這時候就跳出了while!
純手打!望采納!