第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么write(buf, 0, b)會報錯,改成write(buf, 0, buf.length)就不會報錯了

代碼:

FileInputStream fis = new FileInputStream(srcfile);
??FileOutputStream fos = new FileOutputStream(destfile,true);
??byte[] buf = new byte[20*1024];
??int b=0;
??//從fis中讀取數據存放到buf,從0位置開始,讀取最長buf.length個字節(jié)
??while((b = fis.read(buf, 0, buf.length))!=0)
??{
???//將buf的內容寫入fos,從0位置開始,最多寫入b個字節(jié)
???fos.write(buf, 0, buf.length);????//write(buf,0,b)
???fos.flush();
??}

老師寫的是write(buf,0,b),但是我運行以后是這樣

http://img1.sycdn.imooc.com//57832c2b00011b4a06270114.jpg

改成fos.write(buf, 0, buf.length);就可以了


正在回答

3 回答

b是你本次讀到的字節(jié)數,其中b<=?buf.length。

讀滿的時候b=?buf.length,讀到最后一次的時候很可能b<?buf.length,這個時候buf里面一共有b(<buf.length)個字節(jié),你fos.write(buf, 0, buf.length)就數組越界了。

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

leowei

應該是-1那的問題,讀的時候只要是buf.length 中的數,就不會越界
2016-11-02 回復 有任何疑惑可以回復我~

謝謝!粗心寫錯了

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

? while((b = fis.read(buf, 0, buf.length))!=0) ?應該是? while((b = fis.read(buf, 0, buf.length))!=-1)吧 ?

2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么write(buf, 0, b)會報錯,改成write(buf, 0, buf.length)就不會報錯了

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

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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