亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

read返回值問題

...

int bytes = in.read(buf, 0, buf.length);?

int j = 1;

for(int i = 0; i < bytes; i++){ ?//文件字節數小于buf容量應該返回-1,那為什么循環還可以執行下去啊啊啊啊啊啊啊啊啊?

...

正在回答

2 回答

這個方法如果讀到文件末尾才返回-1呢,否則應該返回的是讀取的字節數。

0 回復 有任何疑惑可以回復我~
#1

you_nice 提問者

對的!謝謝解答! 我本來想如果buf.length大于文件大小的話,那么int bytes = in.read(buf, 0, buf,length)讀到文件末尾了,byte不是應該等于-1么,i == 0 > bytes == -1, 那for循環應該就不執行了,可是結果for循環還是執行了,而且輸出了buf.length個字節。 然后看看源碼就懂了,原來是第一次read()的時候讀到了文件末尾才返回 -1,后面的read()如果讀到了文件末尾的話就還是返回讀到的字節數!
2015-07-27 回復 有任何疑惑可以回復我~

請問視頻中,定義了int bytes=0;為什么后面還用if(int i=0;i<bytes;i++){}

而且還可以讀取出內容來。

謝謝你!

0 回復 有任何疑惑可以回復我~
#1

you_nice 提問者

你說的是這一段么 int bytes = 0; while((bytes = in.read(buf, 0, buf.length)) != -1){ ?for(int i = 0; i < bytes; i++){ ?} } 中間有一行bytes = in.read(buf, 0, buf.length),bytes的值改變了,變成讀到的字節數, 所以for循環執行了
2015-07-30 回復 有任何疑惑可以回復我~
#2

鮮衣 回復 you_nice 提問者

哈哈。看漏了,謝謝你!
2015-07-30 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

read返回值問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號